Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    D

    David Keenan

    dkeenan.com · Personal blog · on HN since 2009

    David Keenan hosts 'To Dissect a Mockingbird', a graphical notation for the lambda calculus, with diagrams and a written explanation.

    Visit blogHN submissions
    MathLanguages & Compilers
    What HN says

    HN commenters point to it as a classic visual explanation of lambda calculus, often alongside Smullyan's 'To Mock a Mockingbird' and related lambda calculus discussions.

    Stats for nerds
    31HN people shared it
    13linked in comments
    284story points
    Mar 2026last shared
    2009people per year2026

    Top posts on HN

    1. 1
      To Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus
      9 people · 154 points · first shared 2010 · 7 comments on HN
    2. 2
      To Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus (1996)
      21 people · 130 points · first shared 2009 · 29 comments on HN
    3. 3
      7 segment%20ASCII%20characters
      1 person · first shared 2023
    4. 4
      Graphical lambda26.gif
      1 person · first shared 2018

    What HN people wrote when they linked it

    • IIAOPSWMay 2022

      Its like a version of math where you're representation of "2" is "++" so the expression 2 + 2 becomes "++" + "++".

      "It is a wonderfully bizarre fact that each song of a combinatory bird is not merely the name of another bird but is actually a complete description of the internal plumbing of that other bird. That is, each song is actually a brain map of some bird. Since a song is a complete description of how some bird will respond when it hears another bird, and the only important thing about a combinatory bird is how it responds when it hears another bird, we see that songs and singers are interchangeable. So we can say that the birds sing birds to each other, or we can equally say that what we have is a bunch of songs that sing songs to each other! Combinatory birds exist at an almost mystical level. Their language has no distinction between verbs and nouns. A description of action can equally well be a name."

      https://dkeenan.com/Lambda/

      The bird K was defined as True, and KI as False (try not to think about the fact True(x) / False(x) evaluates to something).

      The claim is that the bird M is logical OR. We can test this exhaustively. M repeats the first word twice, K omits the 2nd word, and I is just there. Leftmost bird is always the next in line for evaluation.

      or(false,false): M(KI)(KI) : (KI)(KI)(KI) : I(KI)(KI) : (KI)(KI): I(KI) : (KI) = false

      or(true,false): MK(KI) : KK(KI) : K = true

      or(false,true): M(KI)K : (KI)(KI)K: I(KI)K : (KI)K : IK : K =…

    • JadeNBAug 2014

      Just a warning: at least for me, once I got started, it became addictive to try, Oulipo-like (http://en.wikipedia.org/wiki/Oulipo), to write simple programmes in these ever-more-restrictive languages. I was helped along immensely by Hindley–Seldin (http://www.cambridge.org/us/academic/subjects/computer-science/programming-languages-and-applied-logic/lambda-calculus-and-combinators-introduction-2nd-edition) and, for, as one would expect, a more friendly but still thoroughly mathematical introduction, Smullyan (http://en.wikipedia.org/wiki/To_Mock_a_Mockingbird). I am not alone in my admiration for the latter; see, for example, http://www.angelfire.com/tx4/cus/combinator/birds.html.

      EDIT to add: Speaking of 'Mockingbird' articles, you may be interested in Appendix A of http://dkeenan.com/Lambda/index.htm, whose author discusses another interpretation, attributed there to Barendregt, of Booleans and numerals. For someone who regards the Church encoding as 'intuitive', they were very surprising!

    • avmichApr 2012

      In pure functional programming, so well mentioned in some PG's articles, you have only functions - no numbers. You can make numbers from functions, though. Then, you may have a basis - a set of functions which are sufficient to represent arbitrarily complex algorithm, i.e., Turing complete set; see here - http://dkeenan.com/Lambda/ .

      Such a set may consist from only one function. So, the whole program is a structure of calling that function. Writing down such a program, we obviously don't need to write the function - it comes by default; we only need to write the structure, which can be represented by ( and ) . In a different way, than what I see here, but still - one bit per parenthesis, very simple processor, lots of memory and lots of steps for simple operations - a Turing tarpit...

    • siddbootsFeb 2022

      They're called "Lambda Diagrams". See the inventor's homepage [1], and some animations [2]. There's actually a long and obscure history of visualizations for lambda calculus. One of the originals is "To Dissect a Mockingbird" [3], which if I recall correctly, was the main thing on the internet in 1996.

      [1] https://tromp.github.io/
      [2] https://www.youtube.com/playlist?list=PLi8_XqluS5xc7GL-bgVrxpA2Uww6nK0gV

      [3] https://dkeenan.com/Lambda/

    • jesuslopJul 2024

      In 1996 DC Keenan wrote "To dissect a mockingbird" [1] giving a graphical notation for lambda calculus, expressing it in pictures with an evocative semantics. 28 years later the linked piece gives a categorical string-diagram version. Applications arise when you are interested in mappings that have extra behavior other than that of functions, as in probabilistic programming, automatic differentiation.

      [1] https://dkeenan.com/Lambda/

    • userbinatorDec 2023

      That's 9 bits, or 512 total combinations in that grid; thus, theoretically one should be able to fit all of ASCII, but many of the characters would be very difficult to distinguish or recognise.

      (Incidentally, a common 7-segment display can also fit all of ASCII, and if you include a decimal point too, can represent a single byte completely: https://dkeenan.com/7-segment%20ASCII%20characters.txt )

    Related

    John Tromptromp.github.io49 people

    Number of legal 18x18 Go positions computed. One more to go

    John Tromp
    Personal · last shared 2026
    Lambda the Ultimatelambda-the-ultimate.org615 people

    Simon Peyton Jones Elected into the Royal Society Fellowship

    Lambda the Ultimate
    Publication · last shared 2026
    Dan Midwooddanmidwood.com22 people

    The Animated Guide to Emacs Paredit

    Dan Midwood
    Personal · last shared 2022
    Jeremy Bowersjerf.org78 people

    Functors and Monads for People Who Have Read Too Many “Tutorials”

    Jeremy Bowers
    Personal · last shared 2026
    BetterExplainedbetterexplained.com330 people

    An Intuitive Guide to Linear Algebra (2012)

    BetterExplained
    Personal · last shared 2026
    Steven Wittensacko.net287 people

    TermKit - a graphical terminal replacement

    Steven Wittens
    Personal · last shared 2026
    A Neighborhood of Infinityblog.sigfpe.com185 people

    Why is nuclear fusion so hard?

    A Neighborhood of Infinity
    Personal · last shared 2026
    Keith Schwarzkeithschwarz.com50 people

    Darts, Dice, and Coins: A beautiful article on a beautiful algorithm

    Keith Schwarz
    Personal · last shared 2026