Parenthetically Speaking
parentheticallyspeaking.org · Personal blog · on HN since 2020
Parenthetically Speaking is a blog by a programming languages academic on language design, teaching programming, recursion, and writing a book.
What HN saysCommenters discuss its bicameral-versus-homoiconic argument about Lisp syntax and praise the author's book as one that changes how you think about languages.
21HN people shared it
9linked it in comments
30stories submitted
880story points
3 months agolast shared
2020people per year2026
Most-shared posts
- 1Bicameral, Not Homoiconic7 people · 122 points · first shared 2024 · 65 comments on HN
- 2Programming Languages as Objects in Nature5 people · 32 points · first shared 2020 · 5 comments on HN
- 3How not to teach recursion (2021)4 people · 180 points · first shared 2021 · 110 comments on HN
- 4What Is a Pedagogic IDE?3 people · 12 points · first shared 2020 · discussion on HN
- 5Shriram Krishnamurthi's Pedagogy Recommendations3 people · 9 points · first shared 2025 · discussion on HN
- 6Which programming language should I teach first?2 people · 21 points · first shared 2025 · 2 comments on HN
- 7Your Inbox Is a Bandit2 people · 5 points · first shared 2021 · 1 comments on HN
- 8You too can write a book1 people · 217 points · first shared 2024 · 76 comments on HN
- 9DrScheme in Space1 people · 138 points · first shared 2021 · 34 comments on HN
- 10Getting a Computer Science PhD in the USA1 people · 90 points · first shared 2021 · 68 comments on HN
- 11Inferior Is Better1 people · 27 points · first shared 2022 · 33 comments on HN
- 12How to teach writing research papers1 people · 20 points · first shared 2024 · 2 comments on HN
- 13Bicameral, Not Homoiconic1 people · 4 points · first shared 2024 · 2 comments on HN
- 14FatNums: An Alternate Representation for School Arithmetic (2020)1 people · 3 points · first shared 2025 · 1 comments on HN
- 15Homepage1 people · first shared 2022
What HN people wrote when they linked it
spdegabrielle · 2022-04-30
Great book. Will change how you think about programming languages, and not many books can make that claim.
Good news is the author* is working on a new version.
* https://parentheticallyspeaking.org/about/
jonsen · 2022-06-18
The home page has it:
https://parentheticallyspeaking.org/
velcrovan · 2026-07-22
And in assembler and machine code before that!
I'm persuaded that just about every language is "homoiconic" and that _bicameral syntax_ is the actually-interesting thing about Lisps : https://parentheticallyspeaking.org/articles/bicameral-not-homoiconic/
ogogmad · 2026-06-24
Once you have a bicameral syntax*, is there much point left in formal language theory? For instance, why would you still need complicated notions like LR(k) grammars (which Wikipedia confuses with LR(k) parsers)? I ask out of genuine confusion: I've been reading about formal grammars, and have even added to Wikipedia - but I'm still puzzled as to why PL designers might choose to have hard-to-parse syntaxes. Why don't people instead adopt an intermediate syntax like Rhombus's shrubbery notation†?
* - https://parentheticallyspeaking.org/articles/bicameral-not-homoiconic/
† - https://docs.racket-lang.org/shrubbery/index.html?fam=Rhombus&famr…
DonaldPShimoda · 2026-04-13
Hm. Homoiconicity is not a well-defined term (see, for example, Shriram Krishnamurthi's thoughts [0][1]), but even skimming over that fact, it is a syntactic property, while the quoted line is about semantics. Switching your language to Lisp (or one of its descendents) doesn't gain you anything semantically.
[0] Shriram is an original member of the Racket project, so he's been working in the Lisp-like domain for at least 30 years and, specifically, he works in an offshoot of Lisp that is particularly concerned with questions of syntax. I think this establishes him as a reasonable citation for this topic.
[1] https://parentheticallyspeaking.org/articles/bicameral-not-homoiconic/
soegaard · 2025-01-30
> This is just my opinion but I believe it's because the syntax tree is the syntax.
This holds for "old" lisps. There are other options. Racket and Scheme uses "syntax objects". Syntax objects contain besides the old syntax tree also source location information and lexical information.
See for example the last part of:
https://parentheticallyspeaking.org/articles/bicameral-not-homoiconic/
genezeta · 2024-12-02
Correct link: https://parentheticallyspeaking.org/articles/bicameral-not-homoiconic/
Discussion is at https://news.ycombinator.com/item?id=42292805
lifthrasiir · 2024-01-15
Fibonacci recursion is a bad example for DP because it is obvious how to do that. You need to teach a generative recursion, as pointed out by Shriram Krishnamurthi [1]. Once you've got a hang about a generative recursion DP is a space optimization on top of that.
[1] https://parentheticallyspeaking.org/articles/how-not-to-teach-recursio…
adamddev1 · 2022-07-19
I found HTDP a lot easier to read and work through because it works through more "practical" problems (like building a game) whereas SICP gets into some pretty heady math based problems. Also see this article that explains how it takes a different approach to teaching recursion. I found this approach very understandable and helpful.
https://parentheticallyspeaking.org/articles/how-not-to-teach-recursio…