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

Top all-time · #2261

J

Justin Le

Personal blog · blog.jle.improgrammingmath

Justin Le writes in Code, a personal blog at blog.jle.im about programming and math. Since 2013, 36 different Hacker News readers have linked it 57 times, most often “IO Monad Considered Harmful”. It is still writing: the last post was on 2026-08-04, and you can follow it by feed.

Visit the blog
57mentions?
36HN people?
2013–2026first – last linked?
Links on Hacker News per year · peak 10 in 2015

Weblog of Justin Le, covering various adventures in programming and explorations in the worlds of computation physics, and knowledge.

Most-linked posts?

  1. IO Monad Considered Harmful
    5 people · 5 mentions · first linked 2015-01-23
  2. The Baby Paradox in Haskell
    3 people · 3 mentions · first linked 2025-08-21
  3. Haskell Nuggets: K-Means
    3 people · 3 mentions · first linked 2024-07-26
  4. Purely Functional Approach to Typed Trainable Models
    3 people · 3 mentions · first linked 2018-05-14
  5. Shuffling Things Up: Solving Advent of Code with Group Theory and Haskell
    3 people · 3 mentions · first linked 2020-11-18
  6. Hamiltonian Dynamics in Haskell
    3 people · 3 mentions · first linked 2017-11-27
  7. Typesafe Neural Networks in Haskell with Dependent Types
    2 people · 4 mentions · first linked 2016-05-25
  8. First Class Statements
    2 people · 3 mentions · first linked 2015-05-17
  9. Sum Types and Subtypes and Unions
    2 people · 2 mentions · first linked 2025-03-06
  10. Faking ADTs and GADTs in Languages That Shouldn't Have Them
    2 people · 2 mentions · first linked 2025-04-01

What Hacker News says?

  1. Don't get me wrong; I'm not knocking it. I definitely see the value in these kinds of features. Like zippers, I'm sure it's another case of "If you understand it, it's really useful." The point is, you don't necessarily need it to get the job done, and you certainly don't need to be intimidated about it or feel obligated to learn it right off. Even Haskell isn't actually so difficult to grasp the basics of, if you k…

    Comment linking /entry/io-monad-considered-harmful

    on “Clojure 1.7 is now available”
  2. Submitted Typesafe Neural Networks in Haskell with Dependent Types as a story · 140 points

    HN discussion
  3. > No mon[a|oi]ds necessary. Mon[a|oi]ds are everywhere, but in some languages you just don't know about it. Which of course lets you not have to learn those concepts knowingly, but they're still there and you still could be a better developer for at least knowing they're there and they're behind some of the repeating patterns you see (string concatenation / promises / etc.) I believe "not worrying about them at firs…

    Comment linking /entry/shuffling-things-up.html

    on “Why is learning functional programming so damned hard? (2019)”
  4. Submitted IO Monad Considered Harmful as a story · 90 points

    HN discussion
  5. To the extent that I understand your complaint, there is a functional architecture that alleviates this concern: arrowized functional reactive programming. https://blog.jle.im/entry/intro-to-machines-arrows-part-1-st... talks about it.

    Comment linking /entry/intro-to-machines-arrows-part-1-stream-and.html

    on “F# is gaining independence from .NET”
  6. Submitted First Class Statements as a story · 48 points

    HN discussion
  7. In other words, IO Monad Considered Harmful. https://blog.jle.im/entry/io-monad-considered-harmful.html

    Comment linking /entry/io-monad-considered-harmful.html

    on “A monad is a monoid in the category of endofunctors, what’s the problem?”
  8. Submitted Functors to Monads: A Story of Shapes as a story · 41 points

    HN discussion
  9. Folks who are into this may also like the "Type Safe Neural Networks in Haskell" https://blog.jle.im/entry/practical-dependent-types-in-haske... I'm also starting work on a set of bindings to libdarknet for Idris with similar properties.

    Comment linking /entry/practical-dependent-types-in-haskell-1.html

    on “Neural Networks, Types, and Functional Programming (2015)”
  10. Submitted Inside My World – Ode to Functor and Monad as a story · 12 points

    HN discussion
  11. This post builds the intuition for something like the Netwire library http://blog.jle.im/entry/effectful-recursive-real-world-auto...

    Comment linking /entry/effectful-recursive-real-world-autos-intro-to-machine

    on “The Elm Architecture”
  12. Submitted The Baby Paradox in Haskell as a story · 6 points

    HN discussion
  13. See https://blog.jle.im/entry/practical-dependent-types-in-haske... where you get this function definition: https://github.com/mstksg/inCode/blob/master/code-samples/de... I liked this article: https://ren.zone/articles/safe-money where they get e.g. an ExchangeRate "USD" "JPY" type from input that has a different type from ExchangeRate "EUR" "JPY" (and thus can't be used to convert euros, only US dollars).

    Comment linking /entry/practical-dependent-types-in-haskell-2.html

    on “Typesafe Neural Networks in Haskell with Dependent Types”
  14. Submitted Faking ADTs and GADTs in Languages That Shouldn't Have Them as a story · 5 points

    HN discussion
  15. I don't think the Julia implementation makes much use of typing. A related Haskell codebase for Hamiltonian (not Lagrangian) mechanics that I found really helpful to scan was https://blog.jle.im/entry/hamiltonian-dynamics-in-haskell.ht... -

    Comment linking /entry/hamiltonian-dynamics-in-haskell.html

    on “How to Turn Physics into an Optimization Problem”
  16. Submitted Haskell Nuggets: K-Means as a story · 5 points

    HN discussion
  17. https://blog.jle.im/entry/lenses-products-prisms-sums.html

    Comment linking /entry/lenses-products-prisms-sums.html

    on “Lens: Lenses, Folds and Traversals”
  18. Submitted The Baby Paradox in Haskell as a story · 4 points

    HN discussion
  19. In truth, you don't actually have to climb the IO monad learning curve. IO in Haskell has nothing to do with monads.[1] It's simply a type which encodes input and output effects. Simple and elegant. The fact that people so thoroughly confuse the issue by mixing the disparate topics of IO and monads, is a shame. [1] http://blog.jle.im/entry/io-monad-considered-harmful

    Comment linking /entry/io-monad-considered-harmful

    on “Haskell in Production”
  20. Submitted Seven Levels of Type Safety in Haskell: Lists as a story · 4 points

    HN discussion
  21. He even says explicitly "(never mind how we deal with uniqueness)" in the solution section and has already acknowledged that there are only around 2 million combinations to check. ETA since he mentions the implementation is a translation of this Haskell implementation: http://blog.jle.im/entry/unique-sample-drawing-searches-with... presumably the uniqueness is done by updating the list of remaining possibilities for…

    Comment linking /entry/unique-sample-drawing-searches-with-list-and-statet

    on “Using Monads in C++ to Solve Constraints: 1. The List Monad”
  22. Submitted Haskell Nuggets: K-Means as a story · 4 points

    HN discussion
  23. You can have types in haskell that represent finite length lists. Here's a blog post giving an overview of several methods of doing so (and several examples of libraries in the wild that provide this): https://blog.jle.im/entry/fixed-length-vector-types-in-haske... There's a tradeoff here between generality and how important it is to encode all invariants about a piece of data. Many haskell list processing functions…

    Comment linking /entry/fixed-length-vector-types-in-haskell.html

    on “Types and Tests”
  24. Submitted Haskell nuggets: functional k-means with dependent types as a story · 4 points

    HN discussion
  25. In the same vein, http://blog.jle.im/entry/first-class-statements

    Comment linking /entry/first-class-statements

    on “Imperative Functional Programming (1996) [pdf] ”
  26. Submitted Solving Advent of Code Day 5 w Group Theory (free groups, group homomorphisms) as a story · 4 points

    HN discussion
  27. Here's an explanation of how IO works in Haskell: http://blog.jle.im/entry/first-class-statements If you go through it and understand it, you will find that it is completely "pure".

    Comment linking /entry/first-class-statements

    on “Once you go functional, you can never go back”
  28. Submitted The Compromiseless Reconciliation of I/O and Purity as a story · 4 points

    HN discussion
  29. Ignore them all, use these: http://blog.sigfpe.com/2006/08/you-could-have-invented-monad... http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/ba... http://blog.jle.im/entry/io-monad-considered-harmful

    Comment linking /entry/io-monad-considered-harmful

    on “Outcome-Oriented Programming”
  30. Submitted Faking ADTs and GADTs in languages that shouldn't have them as a story · 3 points

    HN discussion

Search all of HN for blog.jle.im

Linked by the same people?