Remix.run Logo
whstl 4 days ago

> The problem is when implementations aren’t actually monads at all

Exactly, this was my point, it wasn't clear.

The original definition, and Haskell's implementation are good in itself. Monads in Haskell are not that difficult or too abstract.

It was Monad tutorials and partial implementations missed the mark, like in your example.

Myself, similarly, I've seen way too many Option<T> implementations in Typescript that are less safe than if (value !== null) {}, because they replace a static check with an exception in runtime.