
Marco Righele wrote:
Hello everyone,
I have some operations that have to be done in sequence, with each one having the result of the previous as input. They can fail, so they have signature a -> Maybe b Checking for error can be quite tedious so I use monadic operations:
f :: a -> Maybe b do y <- foo x z <- boo y moo z
The problems arise when I try to do the same thing within the IO Monad, i.e. the functions have signature a->IO (Maybe b)
How can I achieve the same effect (if it is ever possible)? I feel like it should be something almost trivial, but I really can't get it.
Hi. How about giving your functions the type a -> IO b and representing failure with either 'fail', 'ioError' or 'throwError'? They propagate the same way as Nothing in the Maybe monad. http://www.haskell.org/ghc/docs/latest/html/libraries/base/System.IO.Error.h... http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control.Monad.Err... Regards, Tom