1. Monads are hard to teach and learn – a cultural rite of passage
Many commenters pointed out that the difficulty lies not in the math itself but in the way monads are explained and the surrounding “monad tutorial” tradition.
- “I've long suspected that one of the things that makes monads notoriously difficult to explain to people outside of the Haskell ecosystem is that very few other languages even have a kind system…” – i2talics
- “For haskellers, it is writing a monad tutorial… For javascripters, it is writing a framework… and so on.” – hexasquid
- “The thing that makes monads difficult is laziness and the anti math circle jerk.” – epolanski
2. Haskell’s functional ideas are spreading and influencing mainstream language design
There is enthusiasm for bringing Haskell‑style abstractions (higher‑order kinds, monads, dependent‑type‑ish features) into everyday programming.
- “The more of Haskell's ideas that bleed into mainstream languages, the happier the world will become.” – adamddev1
- “I've been vibe coding my own language and it's compiler is in Haskell, it's been great for the agents to be inspired by Haskell…” – thomasfromcdnjs
- “I used to be a big Haskell fan… I highly recommend Haskell fans explore Lean/Agda/Idris. They make Haskell feel like a pile of spaghetti by comparison.” – deterministic
3. Practical trade‑offs: monads and advanced type systems in real‑world software
While monads shine for effect‑pure languages, critics argue they add unnecessary complexity for large applications, and the Haskell type‑system extensions can feel cumbersome compared to native dependent types.
- “But in practice, I think monads are a poor tool for large‑scale software development. I spent a long time trying to build a large game in Haskell and eventually gave up out of frustration with the complexity they introduced.” – deterministic
- “The problem is not monads… It is the need to keep that representation modular that leads to monad transformers, which makes regular people (like me) simply check out and go back to C++.” – senshan
- “My main problem with Haskell is that it never fully embraced dependent types. Instead, it kept adding one type system extension after another, making the language unnecessarily complicated.” – deterministic