[Haskell-cafe] Transforming from on State-transformer to another
oleg.grenrus at iki.fi
Wed Nov 20 18:15:14 UTC 2019
You need something like Lens to "zoom" into the state. As state monad
can not only `get` but also `put` the state, the plain a -> b function
is not enough: you need Lens a b.
On 20.11.2019 20.08, Jacques Carette wrote:
> Is there a way to have a function of type (a -> b) -> State a c ->
> State b c ?
> 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.
> This matches 'first' on Data.Bifunctor, but State is not a Bifunctor.
> Nor a Profunctor, AFAIK.
> Use case: a Stateful computation where a local sub-computation needs
> more (local) state that will be, in-time, de-allocated.
> I guess the usual solution is probably to use 2 stacked State, but I'm
> curious if there's another way.
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> Only members subscribed via the mailman list are allowed to post.
More information about the Haskell-Cafe