unrepl

discussing specification of an edn-based repl and its implementations.
richiardiandrea 2017-05-12T01:35:07.976893Z

I was looking for the Microsoft doc defining the protocol for a Repl that was posted here some time ago. Slack is not helping πŸ˜€

richiardiandrea 2017-05-12T01:40:44.019016Z

In particular I am interested in understanding if unrepl can be really generalized to other languages repls (node is the first candidate here). If a Repl can be upgraded to anything the client needs, the I should be able to have repl that can switch from ClojureScript to JavaScript so TypeScript.

richiardiandrea 2017-05-12T01:42:15.030888Z

Maybe this is a dream but I see so many repl implementations in the wild and my stomach is churning every time I see how much duplication there is out there (especially in JS land!)

richiardiandrea 2017-05-12T01:43:43.041913Z

Probably this has been already clarified anyways, just wanted to get confirmation. I saw the need of porting the nrepl implementation to cljs. I am not promising..But I will have a look at that πŸ˜€

richiardiandrea 2017-05-12T01:48:20.077460Z

One thing I am curious about, why choosing the edn format as output? Transit is notoriously faster and equally supported. A side question: is the output configurable by the "upgraded" repl?

cgrand 2017-05-12T08:01:42.994398Z

On unrepl generalization there are many aspects to that: β€’ the upgrade strategy is not possible for all langs (not blocking but unrepl has to be started first) β€’ I believe most messages are not too clojure specific β€’ edn: because it’s easy to produce with no additional lib; if you want to switch to a binary serialization you have at least two options: re-upgrade unrepl (again not possible everywhere) or use a session command to switch formats.

thheller 2017-05-12T10:38:40.195404Z

@richiardiandrea LSP is strictly not a REPL. My argument is that something like LSP should be used for tooling (ie. auto-complete, doc lookup, etc) but definitely NOT as a REPL.

richiardiandrea 2017-05-12T14:37:08.104545Z

Thanks folks, yes not all langs for sure. But for instance all JS langs should be doable. As long as there is an "extension" in node.js node_modules, for instance, it can be picked up. Same could be for Java Scala Clojure in the JVM...The idea of having one repl per platform with the same protocol is really appealing to me πŸ˜€