Ideas for Clojure Network Eval API

submited by
Style Pass
2022-05-18 06:30:06

After implementing an nREPL server for a new Clojure runtime, I’m begging the other tools maintainers to work with me to define an actual standard that works.🥹

REPL stands for something - Read, Eval, Print, Loop. It does not stand for - Eval RPC Server/Window. It is not something I “feel” about. But I do think we should be precise about what we call REPLs. […] ‘read’ is a protocol. It works on character streams, one of the most widely available transports. It uses delimiters (spaces, [], (), {} etc) to separate forms/messages. Readers implement this protocol and return data upon encountering complete forms.

I am happy to accept these definitions and have no desire to force REPL to mean what it’s not. But then, in my opinion, Clojure does not need a REPL, it needs an Eval RPC protocol. To turn Rich’s methods against him, current REPL complects command-line interactions with code evaluation.

It’s trivial to build human-friendly CLI on top of machine-friendly RPC, but much harder to build machine-friendly RPC on top of a human-oriented command line.

Leave a Comment