Simple monad examples
From HaskellWiki
This page is designed to show some simple examples of using monads, specifically using Maybe.
I personally found that I reached monadenlightenment once I contrived this simple example while playing around to see the "guts" of a monadic expression:
Just 5 >>= (\ x > if (x == 0) then fail "zero" else Just (x + 1) )
Which results in:
Just 6
All you really need to know, is that the (>>=)
operator either returns Nothing
if it is passed Nothing
on its lefthand side; or if its lefthand side is a Just …
it strips off the Just
, and passes the contents into the function supplied on its righthand side. Simple!
Some simple exercises
What would the following snippets resolve to?

Just 0 >>= (\ x > if (x == 0) then fail "zero" else Just (x + 1) )

Nothing >>= (\ x > if (x == 0) then fail "zero" else Just (x + 1) )
More examples can be found in the reference guide A tour of the Haskell Monad functions, by HenkJan van Tuyl.