<div dir="ltr">On Sat, Jun 23, 2012 at 12:22 PM, Anton Kholomiov <span dir="ltr">&lt;<a href="mailto:anton.kholomiov@gmail.com" target="_blank">anton.kholomiov@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Why this function doesn&#39;t compile?<br><br>phi :: Monad m =&gt; StateT s m ()<br>phi = lift $ return () <br><br>I get (ghc-7.4.1)<br><br>    Could not deduce (MonadTrans (StateT s))<br>      arising from a use of `lift&#39;<br>

    from the context (Monad m)<br></blockquote><div><br></div><div>This means exactly what it says:  you have stated that m must be a Monad, but you didn&#39;t say anything about whether it&#39;s a MonadTrans, so you can&#39;t use &quot;lift&quot;.  The correct signature would be</div>
<div><br></div><div>    phi :: (Monad m, MonadTrans m) =&gt; StateT s m ()</div><div><br></div></div>-- <br>brandon s allbery                                      <a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a><br>
wandering unix systems administrator (available)     (412) 475-9364 vm/sms<br><br>
</div>