<div dir="ltr">For what it's worth, I do sometimes define a version of MonadReader's "local" for MonadState; it runs a State computation on a transformed State. I've heard this used often enough to wonder why it's not a standard part of MonadState.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 20, 2019 at 3:41 PM Viktor Dukhovni <<a href="mailto:ietf-dane@dukhovni.org">ietf-dane@dukhovni.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> On Nov 20, 2019, at 1:08 PM, Jacques Carette <<a href="mailto:carette@mcmaster.ca" target="_blank">carette@mcmaster.ca</a>> wrote:<br>
> <br>
> In the particular case of interest, I am interested in is actually b -> State a c -> (State (a,b) c), which is of course a special case of the above.<br>
> <br>
> Use case: a Stateful computation where a local sub-computation needs more (local) state that will be, in-time, de-allocated.<br>
<br>
Perhaps I misunderstood your use-case, but it seems that with a local<br>
sub-computation that needs extra state you can just:<br>
<br>
        ...<br>
        st <- get<br>
        (c, (st', _)) <- runStateT local (st, extra)<br>
        put st'<br>
        ...<br>
<br>
where local :: StateT (a, b) m c.<br>
<br>
-- <br>
        Viktor.<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>brandon s allbery kf8nh</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a></div></div></div></div></div>