Monads with Join() instead of Bind()
Posted
by
MathematicalOrchid
on Stack Overflow
See other posts from Stack Overflow
or by MathematicalOrchid
Published on 2012-06-27T20:50:45Z
Indexed on
2012/06/27
21:16 UTC
Read the original article
Hit count: 167
Monads are usually explained in turns of return
and bind
. However, I gather you can also implement bind
in terms of join
(and fmap
?)
In programming languages lacking first-class functions, bind
is excruciatingly awkward to use. join
, on the other hand, looks quite easy.
I'm not completely sure I understand how join
works, however. Obviously, it has the [Haskell] type
join :: Monad m => m (m x) -> m x
For the list monad, this is trivially and obviously concat
. But for a general monad, what, operationally, does this method actually do? I see what it does to the type signatures, but I'm trying to figure out how I'd write something like this in, say, Java or similar.
(Actually, that's easy: I wouldn't. Because generics is broken. ;-) But in principle the question still stands...)
Oops. It looks like this has been asked before:
Could somebody sketch out some implementations of common monads using return
, fmap
and join
? (I.e., not mentioning >>=
at all.) I think perhaps that might help it to sink in to my dumb brain...
© Stack Overflow or respective owner