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 eval in 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/cdr of 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/cdr of 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.”