[Haskell-cafe] Newbie Question about Error Handling

Gerd M gerd_m1977 at hotmail.com
Sun Jul 24 16:00:58 EDT 2005


Hello!
I'm confused by the error handling in Haskell. I've written a program that 
uses a combined monad of type:
type MyMonad a = ErrorT MyErrorType (StateT MyStateType IO) a
(MyErrorType is an instance of Error)

Therefore, to handle IO Errors inside of MyMonad I need to write:
foo :: MyMonad a
foo = do ...
              inp <- liftIO (getChar
                                `catchError`
                                (\e -> if isEOFError e then return '\0'
                                                               else return 
'?') )
              case inp of
                       '\?' -> throwError ...
                       ....
              `catchError`
              myErrorTypeHandler
This of course is cumbersome and ugly and I'm sure there is a way to do 
better. Helpful advice is welcome!

_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar - get it now! 
http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/



More information about the Haskell-Cafe mailing list