Hofstadter on Lisp (1983)
Modern Uses of Lisp and Dialects
- Widely cited real-world uses: web services (including HN), airline pricing engines, payments/receipts, cybersecurity platforms, trading, CAD/3D, chip design, quantum computing, formal verification, HPC, and internal tooling at large companies.
- Clojure is heavily used for networked and data-heavy systems (leveraging the JVM and core.async), plus data science workflows via JVM libraries and newer dataframe tooling.
- Scheme/Racket and Guile are used for teaching, package managers/distros, and configuration. AutoLISP remains important in AutoCAD; Fennel embeds Lisp-like scripting into Lua ecosystems.
Is Clojure “Really” a Lisp?
- Some “purists” object (e.g., lack of traditional cons cells), but most participants treat Clojure as a Lisp dialect.
- Several argue the important property is homoiconicity (code as data), not lists per se; trees of vectors work too.
Homoiconicity, Macros, and Code-as-Data
- A Python user asks what Lisp gives beyond higher-order functions and decorators.
- Replies emphasize that
evalin Lisp operates on structured forms, not opaque strings; you can traverse, transform, and generate code safely before evaluation. - Macros and direct AST manipulation are presented as a qualitatively different tool, enabling powerful domain-specific abstractions and metaprogramming.
Nil, Lists, and Semantics
- Historical note: early Lisp treated
car/cdrof NIL as errors; Common Lisp/Emacs Lisp later defined them to return NIL. - Debate: some find this behavior ergonomic (shorter idioms like
(cdr (assoc ...))), others call it “bleeding nils/NULLs” and worry about masking bugs. - Scheme explicitly does not allow
car/cdrof the empty list, leading to more explicit checks but arguably safer code.
Syntax and Parentheses
- Multiple people admit they “bounce off” S-expressions and would prefer infix or indentation-based syntaxes; Dylan, sweet-expressions, and similar experiments are mentioned but seen as niche.
- Others argue that once structural editing and indentation are embraced, parentheses become an advantage; alternative syntaxes repeatedly fail to gain traction in practice.
Hofstadter, Algol, and Writing Style
- Strong appreciation for Hofstadter’s clear, playful exposition and for the old Scientific American era.
- Discussion of his comparison of Lisp and Algol as “mathematically natural”: some recall Algol (and C/Pascal) as elegant structured kernels; others cite work showing Algol procedures correspond closely to lambda calculus.
Reflections on Learning and Evangelism
- Several lament that classic Lisp advocacy focused on recursion, AI, and theory without showing concrete productivity gains on real problems, especially on early microcomputers.
- Others counter with more practical books/courses and note that actually writing and maintaining Lisp, not just reading about it, is what makes its advantages “click.”