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).