[Haskell-cafe] Transforming from on State-transformer to another

Brandon Allbery allbery.b at gmail.com
Wed Nov 20 21:39:45 UTC 2019


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.

On Wed, Nov 20, 2019 at 3:41 PM Viktor Dukhovni <ietf-dane at dukhovni.org>
wrote:

> > On Nov 20, 2019, at 1:08 PM, Jacques Carette <carette at mcmaster.ca>
> wrote:
> >
> > 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.
> >
> > Use case: a Stateful computation where a local sub-computation needs
> more (local) state that will be, in-time, de-allocated.
>
> Perhaps I misunderstood your use-case, but it seems that with a local
> sub-computation that needs extra state you can just:
>
>         ...
>         st <- get
>         (c, (st', _)) <- runStateT local (st, extra)
>         put st'
>         ...
>
> where local :: StateT (a, b) m c.
>
> --
>         Viktor.
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



-- 
brandon s allbery kf8nh
allbery.b at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20191120/d1298a11/attachment.html>


More information about the Haskell-Cafe mailing list