Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #2629

T

The Comonad Reader

Personal blog · comonad.com/readerprogrammingmath

The Comonad Reader is a personal blog at comonad.com about programming and math. Since 2008, 29 different Hacker News readers have linked it 34 times, most often “Letter to a Young Haskell Enthusiast”. It is still writing: the last post was on 2026-10-06, and you can follow it by feed.

Visit the blog
34mentions?
29HN people?
2008–2026first – last linked?
Links on Hacker News per year · peak 4 in 2010

Too few sampled comments (14) to say how often HN recommends it.?

Why HN links it

HN readers link this Haskell and category-theory blog to explain monads, IO, parsing and why functional programming appeals to people. One commenter calls it a clear explanation of the Haskell community's appeal.

Summarised by Claude from a sample of 14 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Most-linked posts?

  1. Letter to a Young Haskell Enthusiast
    6 people · 6 mentions · first linked 2014-08-01
  2. Linear Bloom Filters
    3 people · 3 mentions · first linked 2008-06-04
  3. /reader/
    2 people · 2 mentions · first linked 2012-11-11
  4. Recursion Schemes (Edward Kmett)
    2 people · 2 mentions · first linked 2010-07-06
  5. Turbo Haskell
    2 people · 2 mentions · first linked 2026-09-30

What Hacker News says?

  1. Note that when you ask a question like this, you will get a biased selection of answers. People who love niche languages for whatever reason will be more than ready to answer these sorts of questions. Passionate people are great, but you often are in need of some fresh opinions on the other side. Here are some that helped me out immensely (I used to love Haskell but now I love it adequately): https://prog21.dadgum.c…

    Comment linking /reader/2014/letter-to-a-young-haskell-enthusiast/

    on “Why Learn Prolog in 2021?”
  2. Submitted Letter to a Young Haskell Enthusiast as a story · 332 points

    HN discussion
  3. Programmer warning: this is the math jargon heavy version, you don't need to know the math jargon to make use of these tools for writing day-to-day programs. There are too many applications for me to do justice in one message and it is a bit messy because all of these are related, but there are roughly three ways that category theory gets applied to computing: - Reasoning about data within computer programs. In "Gen…

    Comment linking /reader/

    on “Emily Riehl is rewriting the foundations of higher category theory”
  4. Submitted Turbo Haskell as a story · 217 points

    HN discussion
  5. see the second-to-last slide for a mapping from Algebraic Structures to Computer Science Concepts. http://comonad.com/reader/wp-content/uploads/2009/08/Introdu...

    Comment linking /reader/wp-content/uploads/2009/08/IntroductionToMonoids.pdf

    on “Ladder of Algebraic Structures”
  6. Submitted Linear Bloom Filters as a story · 21 points

    HN discussion
  7. The extent of my experience on the topic is in half-comprehending hobbyist's awe and the inclusion of okmij on my "personal heroes and demigods" list. The only word I could half-heartedly associate with this structure is the incredibly lame "hylomorphism"... which actually kinda generally expresses the pattern of much of computing. It's 5 AM and I'm going to sleep, but I'll leave you with the the most plausible leav…

    Comment linking /reader/2009/recursion-schemes/

    on “The Most Important Algorithms”
  8. Submitted Turbo Haskell as a story · 12 points

    HN discussion
  9. pjscott · 2010-11-28Recommends
    Yes, it's possible to extend the method in the linked post to parse trees. Check out monoidal parsing: http://comonad.com/reader/2009/iteratees-parsec-and-monoid/ This guy figured out how to turn parsers written with Parsec (an excellent collection of parser combinators; truly a pleasure to use) into monoidal parsers that you can use for incremental and/or parallel parsing.

    Comment linking /reader/2009/iteratees-parsec-and-monoid/

    on “Yacc is dead”
  10. Submitted Wavelets in 3D Graphics as a story · 12 points

    HN discussion
  11. Perhaps the best way to think of it is that a Haskell program is a pure function from FFI outputs to FFI inputs. Something like H out in = out -> (FFIOperation, in) The `IO` monad is nothing more than how operating "inside of this function" feels. The runtime thus operates the pure Haskell program evaluating its FFI demands and returning their results. The AST POV espoused by this article is quite good as well, but…

    Comment linking /reader/2011/free-monads-for-less-3/

    on “Haskell, Monads and Purity”
  12. Submitted Computational Quadrinitarianism (2018) as a story · 12 points

    HN discussion
  13. tel · 2012-11-11Recommends
    This is the most clear explanation for what I enjoy about the Haskell community I've ever read. I am utterly addicted to Conor McBride's [1] work as well since he's doing the incredible thing of answering semi-practical questions with deep dependent typing theory. I also think Gabriel Gonzalez's [2] writing has the right ideas as he tries to explain the feeling and heuristic of using categorical and functorial desig…

    Comment linking /reader/

    on “ There’s more to mathematics than rigour and proofs”
  14. Submitted Letter to a Young Haskell Enthusiast as a story · 9 points

    HN discussion
  15. There has to be an RTS interface. Right now this is "there exists a value called main in the Main module of type IO which the RTS magically understands". This is annoying because it moves so much of IO's reasoning into "RTS Magic". There are better models of IO (some discussion here http://comonad.com/reader/2011/free-monads-for-less-3/ ) which essentially boil down to "bidirectional communication channel with a Rea…

    Comment linking /reader/2011/free-monads-for-less-3/

    on “A Modern Architecture for FP”
  16. Submitted Linear Bloom Filters as a story · 8 points

    HN discussion
  17. The talk he's defending was tiresome and dripping with condescension (I agree with Stephen Diehl: https://twitter.com/smdiehl/status/519160854517149696 ). Typed-language folks don't need advocates who waste breath talking about "incompetent Ruby developers moving to Clojure" and whatnot. There's enough positive stuff to talk about! I think the folks who gave that talk need to read Gershom Bazerman's (a person who ha…

    Comment linking /reader/2014/letter-to-a-young-haskell-enthusiast/

    on “Curry-Howard, the Ontological Ultimate”
  18. Submitted Curried Scheme as a story · 6 points

    HN discussion
  19. In Haskell the IO monad is a weird beast. In particular, other than it "being a monad" and a couple of other instances it's not entirely clear what its semantics are. The "Free monad semantics" described in this post are one choice that is often used but it's a little bit tricky. Free monads are, in particular, "fixed" structures while `IO` can be extended using FFI. There are also questions about how to properly re…

    Comment linking /reader/2011/free-monads-for-less-3/

    on “Monadic IO: Laziness Makes You Free”
  20. Submitted Recursion Schemes (Edward Kmett) as a story · 3 points

    HN discussion
  21. For a nice exposition on how to do some really neat distributed joins that make even more interesting use of hashing / bloom filters, this exposition by Edward Kmett is a nice read: http://comonad.com/reader/2008/linear-bloom-filters/

    Comment linking /reader/2008/linear-bloom-filters/

    on “BloomJoin: Fast asymmetric Hadoop joins using Bloom Filters and Cascading”
  22. Submitted Letter to a Young Haskell Enthusiast (2014) as a story · 3 points

    HN discussion
  23. Well, there's not much to the basic idea--the λ-calculus just is the structure of a cartesian closed category. Exponential objects represent morphisms by objects, a.k.a. first-class and higher-order functions, the equivalence Hom(X * Y -> Z) ~ Hom(X -> Z^Y) is currying, a morphism ((Y^X) * X) -> Y is function application, and so on. A basic cartesian closed category alone only gets you the simply-typed λ-calculus, t…

    Comment linking /reader/category/category-theory/

    on “Optimising pointer subtraction with 2-adic integers”
  24. Submitted Kan Extensions II: Adjunctions, Composition, Lifting as a story · 3 points

    HN discussion
  25. Back when people-facing computer stuff worked more like computer-facing computer stuff, queries were simple: keywords to match. If you get too many results, add more keywords; if you get too few, remove* keywords (or change existing keywords to be more specific/more general respectively). If you're not searching for literal occurrences of "what" and "is", why should they even be in a query? * this is an instance of…

    Comment linking /reader/2009/remodeling-precision/

    on “Full Time”
  26. Submitted Letter to a Young Haskell Enthusiast as a story · 2 points

    HN discussion
  27. Haskell's sequence is not the same as strength. Strength specifically involves pairs. Nobody seems to know where "strength" got its opaque name from. Like, nobody, not even the guy who first published the term. There is another article on the topic here: http://comonad.com/reader/2008/deriving-strength-from-lazine...

    Comment linking /reader/2008/deriving-strength-from-laziness/

    on “What does it mean for a monad to be strong?”
  28. Submitted A Parsing Trifecta (2009) [pdf] as a story · 2 points

    HN discussion
  29. Submitted Letter to a Young Haskell Enthusiast as a story · 2 points

    HN discussion
  30. Submitted Letter to a young Haskell enthusiast (2014) as a story · 2 points

    HN discussion

Search all of HN for comonad.com

Linked by the same people?