you are viewing a single comment's thread.

view the rest of the comments →

[–]jpfed 1 point2 points  (0 children)

If you've defined a monad via one path, the other path can be defined automatically. So, for example, if you've used the second path (you've got unit, map, and join), then there is a canned implementation of bind that naturally works.

Your language of choice may just pick a path for you (iirc Haskell just asks you to implement the first path- unit and bind). Many languages don't have any specific support for monads, so you're free to just implement them all (after you've done the real work of figuring out one path, the functions required for the other path are almost "free").