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

Jacques Carette carette at mcmaster.ca
Wed Nov 20 18:08:05 UTC 2019

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 

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.


More information about the Haskell-Cafe mailing list