On Sat, Jun 23, 2012 at 12:22 PM, Anton Kholomiov <anton.kholom...@gmail.com
> wrote:

> Why this function doesn't compile?
>
> phi :: Monad m => StateT s m ()
> phi = lift $ return ()
>
> I get (ghc-7.4.1)
>
>     Could not deduce (MonadTrans (StateT s))
>       arising from a use of `lift'
>     from the context (Monad m)
>

This means exactly what it says:  you have stated that m must be a Monad,
but you didn't say anything about whether it's a MonadTrans, so you can't
use "lift".  The correct signature would be

    phi :: (Monad m, MonadTrans m) => StateT s m ()

-- 
brandon s allbery                                      allber...@gmail.com
wandering unix systems administrator (available)     (412) 475-9364 vm/sms
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to