Tooling

41.1 REPL-Driven Development

Keep a REPL connected to your running program. Evaluate a form, redefine a function, inspect a value, and test immediately: tight feedback loops.

Editor integrations: SLIME/Sly (Common Lisp), CIDER/Calva/Cursive (Clojure), Geiser (Scheme/Racket), racket-mode, DrRacket, Conjure (Neovim, multiple Lisps), and Alive (VS Code, Common Lisp).

41.2 Structural Editing

Edit s-expressions, not characters: paredit, smartparens, lispy, parinfer (indentation-driven), evil-cleverparens. Core operations: slurp, barf, raise, splice, wrap, kill sexp, and transpose sexps.

41.3 Debugging and Inspection

Interactive debugger with restarts (SLDB), trace, step, inspect, break

C-c C-c + CIDER debugger, tap> + Portal/Reveal, clojure.tools.trace

DrRacket debugger, racket/trace, macro stepper Edebug, debug-on-error, trace-function

41.4 Formatting, Linting and Testing

Formatters: cljfmt (Clojure), raco fmt (Racket), Emacs indentation (universal for Lisps).

Linters: clj-kondo, sblint/Mallet-style tools (CL), package-lint/checkdoc (Elisp).

Testing: clojure.test, rackunit, FiveAM/Parachute/Rove (CL), ERT (Elisp), SRFI-64 (Scheme).