[Haskell-beginners] monad transformers

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Fri Aug 14 21:05:14 EDT 2009


On Aug 14, 2009, at 20:55 , Michael P Mossey wrote:
> In Martin Grabmuller's tutorial "Monad Transformers Step by Step",  
> found here
>
> http://user.cs.tu-berlin.de/~magr/pub/Transformers.pdf
>
> he gives an example of composing ErrorT, StateT, ReaderT, and  
> WriterT. Early in the paper, where he composes just ErrorT and ReaderT
>
>    type Eval3 a = ReaderT Env (ErrorT String Identity) a
>
> he uses 'ask' and 'throwError' in some example code. I notice that  
> he doesn't have to lift throwError into the ErrorT monad. Why is  
> this? Do I misunderstand something about monad transformers? Is it a  
> convenience definition of throwError?


Look for definitions of the form

 > instance MonadReader Eval3 where ...
 > instance MonadError Eval3 where ...

These effectively "import" definitions of ask, throwError, etc. with  
implicit lifting.

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH


-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
Url : http://www.haskell.org/pipermail/beginners/attachments/20090814/9417d865/PGP.bin


More information about the Beginners mailing list