<p><br>
On Mar 8, 2012 11:43 AM, &quot;Gábor Lehel&quot; &lt;<a href="mailto:illissius@gmail.com">illissius@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On Thu, Mar 8, 2012 at 10:18 AM, Michael Snoyman &lt;<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>&gt; wrote:<br>
&gt; &gt; My solution was to create a new typeclass[2]:<br>
&gt; &gt;<br>
&gt; &gt; class MonadLift base m | m -&gt; base where<br>
&gt; &gt;    lift :: base a -&gt; m a<br>
&gt;<br>
&gt; Have you seen:<br>
&gt; <a href="http://hackage.haskell.org/package/transformers-base">http://hackage.haskell.org/package/transformers-base</a></p>
<p>Yes, I actually use it quite a bit via monad-control. However, MonadBase has a different purpoe: an instance of MonadBase for Widget would be intended to lift to IO, not to Handler. But perhaps transformers-base would be a good place to include a typeclass like MonadLift.</p>

<p>Michael</p>