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]

[hidden email]
system administrator [openafs,heimdal,too many hats]

[hidden email]
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