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

  1. 1
    Bicameral, Not Homoiconic
    7 people · 122 points · first shared 2024 · 65 comments on HN
  2. 2
    Programming Languages as Objects in Nature
    5 people · 32 points · first shared 2020 · 5 comments on HN
  3. 3
    How not to teach recursion (2021)
    4 people · 180 points · first shared 2021 · 110 comments on HN
  4. 4
    What Is a Pedagogic IDE?
    3 people · 12 points · first shared 2020 · discussion on HN
  5. 5
    Shriram Krishnamurthi's Pedagogy Recommendations
    3 people · 9 points · first shared 2025 · discussion on HN
  6. 6
    Which programming language should I teach first?
    2 people · 21 points · first shared 2025 · 2 comments on HN
  7. 7
    Your Inbox Is a Bandit
    2 people · 5 points · first shared 2021 · 1 comments on HN
  8. 8
    You too can write a book
    1 people · 217 points · first shared 2024 · 76 comments on HN
  9. 9
    DrScheme in Space
    1 people · 138 points · first shared 2021 · 34 comments on HN
  10. 10
    Getting a Computer Science PhD in the USA
    1 people · 90 points · first shared 2021 · 68 comments on HN
  11. 11
    Inferior Is Better
    1 people · 27 points · first shared 2022 · 33 comments on HN
  12. 12
    How to teach writing research papers
    1 people · 20 points · first shared 2024 · 2 comments on HN
  13. 13
    Bicameral, Not Homoiconic
    1 people · 4 points · first shared 2024 · 2 comments on HN
  14. 14
  15. 15
    Homepage
    1 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
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/
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…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close