Unravel your REPL
summary
Unravel implements an unrepl protocol that exchanges stream of EDN values instead of characters, letting tools separate prompts results printed output and exceptions; the client uses the Clojure socket server (Clojure 1.8) and can boot a tiny ~100-line server blob sent on connect so setup requires no extra server deps. Features: sub-second startup via LUMO, truncated lazy-sequence printing with explicit continuation, and transclusion markers that let the client request more elements on demand.
AI-written summary · about
chapters (12)
- 0:00Intro
- 0:38Phenomenology of Clojure Programming Some languages like Java encourage a top-down approach • Changes to the source require recompiling and restarting Decisions driven by static analysis tools provided by IDE Clojure's approach to problem solving break tasks into parts test each function with sample input data
- 2:50Phenomenology The point is not that any approach is superior Clojure programming feels different . more incremental - more exploratory
- 3:16Clojure's approach to problem solving • Not the only way of programming Clojure, but it's a good recipe Recipe: We build up state, run our code and re-run until we get it right
- 8:43Connecting to a Socket Server Set Java system property clojure.server.myrepl...
- 10:22Basic editing features readline-like line editing (cursor movements and history) • tab completion
- 13:27Unravel (2): showing incomplete forms checks if the current line is readable user- - [1 2 3] (map inc )
- 20:51Communication mechanism Terminal connected to the process: read from stdin, write to stdout
- 28:09Machine-readable output Writes to out and eval output can be intermingled Prompts like 'users' are convenient for human beings but difficult to parse • A stream of edn values • Eval output, print output and tooling messages neatly separated ed: convenient for machines, still friendly for tooling authors
- 30:44Pristine input stream - Design choice not to meddle with the input stream Prescribing an input format is an anti-goal • Regular evaluations and toping commands are sent alonside each other as regular Cloure forms
- 31:43Rich capabilities, frugal dependencies A flower blossoming in the desert Socket Server feature introduced in Clojure 1.8 No further dependencies are required - No additional set up other than starting a socket server
- 34:10Server responses include Clojure forms for additional requests Inspired by Hypermedia protocols like REST Inclusiong of Hypermedia references in server responses
related talks
36mParty REPL — A multi-player REPL built for pair-programming
25mUnleash the Power of the REPL
05mUnravel: A Fluent Code Explorer for Data Wrangling
01h 00mThe REPL as a General Purpose Tool
32mREPL, do you speak it
40mDebuggers for Clojure
45mReinventing the REPL
35mThe evolution of the Emacs tooling for Clojure
