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

Those two operations make sense to me. Type signatures and all.

Is that all that is needed for something to be a monad?



The operations also need to obey the "Monad Laws" https://wiki.haskell.org/Monad_laws.

But the intuitive version is that anything with those two operations that doesn't smell funny is a Monad.

(Think of it like implementing an interface: anything that matches the type signature will work, but if you write something silly, it won't work right)


The two things you need are actually bind (>>=) and return. As mentioned, though, you should also be sure it obeys the relevant laws.




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

Search: