LISP: Lots of Irritating Superfluous Parentheses
Description
A two-panel meme from the movie 'The Babadook' used to criticize the Lisp programming language's syntax. In the top panel, a distressed mother is driving and screaming, with the caption 'WHY CANT YOU BE NORMAL'. In the bottom panel, her child in the back seat is screaming wildly. The child is labeled 'LISP', and a cryptic line of code, '`IF ,Q1(COMP (E,@Q1,L2),L2)', is superimposed over his face. The humor comes from personifying Lisp as the 'abnormal' child, contrasting its unconventional, parenthesis-heavy syntax (S-expressions) with the more common C-style syntax of mainstream languages. For experienced developers, it's a relatable jab at a language that is simultaneously powerful, influential, and notoriously difficult to read for newcomers. Watermarks for 'MemeCenter.com' and 't.me/dev_meme' are visible
Comments
7Comment deleted
Lisp code doesn't have syntax; it's a raw abstract syntax tree that you edit directly. It's not that Lisp is abnormal, it's that every other language is just syntactic sugar over a Lisp macro
“Normal?” scoffs Lisp. “I’m already the AST - your syntax highlighter is the one doing all the pretending.”
After 20 years of explaining why our startup's core engine is written in Lisp, I've realized the real problem isn't the parentheses - it's explaining to VCs why our most productive developer refuses to use anything invented after 1958
LISP: where the code is data, the data is code, and your text editor's parentheses-matching feature is the only thing standing between you and a descent into madness. It's the language that makes you question whether you're writing elegant functional code or just playing a very sophisticated game of 'match the brackets' - and after 40 years, the jury's still out on which interpretation is correct
'Why can’t you be normal?' - asks every language with a parser. Lisp: 'Normal is redundant when your syntax is the AST and macros are your code generator.'
Why can't Lisp be normal? Because (normal) always evaluates to NIL
Define “normal” - β‑normal or A‑normal form - because after macroexpand‑1 your sentence is just another S‑expression