Simple monad examples
From HaskellWiki
(Difference between revisions)
m (Fixed grammar (it's -> its)) |
|||
| (4 intermediate revisions not shown.) | |||
| Line 1: | Line 1: | ||
| - | This page is designed to show some simple examples of using | + | This page is designed to show some simple examples of using [[monad]]s, specifically using [[Maybe]]. |
I personally found that I reached monad-enlightenment once I contrived this simple example while playing around to see the "guts" of a monadic expression: | I personally found that I reached monad-enlightenment once I contrived this simple example while playing around to see the "guts" of a monadic expression: | ||
| Line 11: | Line 11: | ||
<haskell>Just 6</haskell> | <haskell>Just 6</haskell> | ||
| - | All you really need to know, is that the >>= operator either returns "Nothing" if it is passed "Nothing" on | + | All you really need to know, is that the >>= operator either returns "Nothing" if it is passed "Nothing" on its left-hand side; or if its left-hand side is a "Just ..." it strips off the just, and passes the contents into the function supplied on its right-hand side. Simple! |
Some simple exercises: | Some simple exercises: | ||
| Line 21: | Line 21: | ||
Nothing >>= (\ x -> if (x == 0) then fail "zero" else Just (x + 1) ) | Nothing >>= (\ x -> if (x == 0) then fail "zero" else Just (x + 1) ) | ||
</haskell> | </haskell> | ||
| + | |||
| + | ---- | ||
| + | More examples can be found in the reference guide [http://members.chello.nl/hjgtuyl/tourdemonad.html A tour of the Haskell Monad functions], by Henk-Jan van Tuyl. | ||
| + | ---- | ||
| + | [[Category:Monad]] | ||
Current revision
This page is designed to show some simple examples of using monads, specifically using Maybe.
I personally found that I reached monad-enlightenment 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 6All you really need to know, is that the >>= operator either returns "Nothing" if it is passed "Nothing" on its left-hand side; or if its left-hand side is a "Just ..." it strips off the just, and passes the contents into the function supplied on its right-hand 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 Henk-Jan van Tuyl.
