Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think "monad" is overloaded, or at least there are varying depths of understanding that are confused.

From a programming perspective, the definition of monads is clear.

  bind :: m a -> (a -> m b) -> m b
  return  :: a -> m a
You can start using monads immediately, and in a language like Haskell, things click fairly quickly, because monads are used everywhere and taken seriously in that language.

But the implications and consequences of this definition for monads aren't always obvious, like how they can be used to structure operations or whatever.

And then there's the category theoretic business of monads which you don't need to understand for most programming purposes. That might be a source of confusion. As you more or less say, people have vague, built up expectations about monads. They expect something heavy and mysterious and doubt they're understood them according to the first definition. But the basic definition is straightforward.

Numbers are like this, too. You understand what a number is (a quantity). You can perform all sorts of operations and calculations using them without knowing number theory or the philosophy of mathematics.



Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: