Hey Mark,
How can I concisely compose these functions without having to write
a cascade of case statements such as:
case f1 rec1 of
Nothing -> return Nothing
Just id1 -> do
rec2 <- f2 id2
return $ case rec2 of
Nothing -> return Nothing
Just rec2' -> case f3 rec2' of
....
I understand that if I was just dealing with Maybe I could use the
fact that Maybe is a monad.
Yes, you can write like this:
id2 <- f1 rec1
rec2 <- f2 id2
rec3 <- f3 rec2
return rec3
or, even shorter:
id2 <- f1 rec1
rec2 <- f2 id2
f3 rec2
The cool thing of the Maybe monad is that it combines a result in
such a way that it removes the plumbing of constantly checking for
Nothing. I can definitely recommand you the following tutorials:
http://www.nomaware.com/monads/html/index.html
http://uebb.cs.tu-berlin.de/~magr/pub/Transformers.en.html
Those two tutorials really helped me.
Good luck,
Chris
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe