<br><br><div class="gmail_quote">On Mon, Dec 13, 2010 at 9:30 PM, Brent Yorgey <span dir="ltr">&lt;<a href="mailto:byorgey@seas.upenn.edu">byorgey@seas.upenn.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi all,<br>
<br>
Today I wanted this function<br>
<br>
  strongLocal :: (MonadReader r1 m1, MonadReader r2 m2) =&gt;<br>
                 (r2 -&gt; r1) -&gt; m1 a -&gt; m2 a<br>
<br>
Of course, after staring at this type for ten seconds I realized that<br>
it cannot be implemented.  But I wondered whether anyone has any<br>
pointers to anything related, or if anyone has good ideas for a<br>
reasonable interface that would allow this.<br></blockquote><div><br>Here&#39;s a draft by Bruno Oliveira and me on manipulating the monad stack. <br>The examples in Section 4.3 on p.12-13 are related:<br><br><a href="http://users.ugent.be/%7Etschrijv/Research/papers/virtual_monad_stack.pdf" target="_blank">http://users.ugent.be/~tschrijv/Research/papers/virtual_monad_stack.pdf</a> <br>
</div></div>