title: Monad join function
body: <p>While monads are represented in Haskell using the bind and return functions, they can also have another representation using the join function, such as <a href="http://en.wikibooks.org/wiki/Haskell/Category_theory#Monads" rel="noreferrer">discussed here</a>. I know the type of this function is M(M(X))->M(X), but what does this actually do?</p>