[ESS] Emacs/ESS is missing that feature

Phillip Lord phillip.lord at newcastle.ac.uk
Tue Aug 6 13:52:08 CEST 2013


Vitalie Spinu <spinuvit at gmail.com> writes:
>  > What is nrepl -- and why would it be better? From my limited
>  > searching, it is a repl for clojure, but do you think it would be
>  > better choice for a next generation ESS?
>
> I never got into details of nrepl but I did with swank an year and a
> half ago. One thing to note is that swank/slime code is virtually
> undocumented and in order to figure out how to implement stuff you have
> to read and understand all the code. nrepl is newer and it looks to be
> much better documented. Nrepl it is not intended for clojure only. As
> docs say: "The default network protocol used is simple, depending
> neither on JVM or Clojure specifics, thereby allowing (encouraging?) the
> development of non-Clojure REPL clients. "


If I remember correctly, swank/slime sends lisp forms backwards and
forward. Works well for Emacs->CL and back communication, but not so
well for anything else.

On the flip side, I don't think anyone has ever implemented nrepl over
anything other than clojure, so how well it works in practice is an open
question. 

> The fact that clojure interaction mode moved from swank to nrepl a
> couple of years ago, can only mean that they had their reasons. 

Part of the reason, though, was dependency management. Swank and Clojure
mode were controlled by different people, and having the correct version
of swank and slime installed was critical; in the end, they packaged
slime with the clojure swank server, and auto installed it in .emacs.d.
A good reason, but one which might not be so good for communication with R.

The other part of the reason was to make it less emacs dependant. There
are clients for nrepl other than Emacs now.

> Nrepl is "fundamentally assyncronuous" and this looks like the correct
> way to handle data transfers, data manipulation and statistical
> processing.
>
> In plus I have my personal reasons. I want to properly learn clojure and
> this looks like a good starting project. 

Incanter is worth a look at also!

Phil



More information about the ESS-help mailing list