<div dir="ltr">Yes, I remember seeing a talk by Edward Kmett (at some Scala user group I think) where he said lenses allowed you to focus on a substate in the state monad.<br><br>Paul</div><br><div class="gmail_quote">On Tue Jan 27 2015 at 11:21:35 PM PkmX <<a href="mailto:pkmx.tw@gmail.com">pkmx.tw@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Isn't this exactly what the `zoom` function does from `Control.Lens.Zoom`?<br>
<br>
> flip execState (1, 1) $ zoom _1 $ modify succ<br>
(2, 1)<br>
<br>
On Wed, Jan 28, 2015 at 6:14 AM, Christopher Done <<a href="mailto:chrisdone@gmail.com" target="_blank">chrisdone@gmail.com</a>> wrote:<br>
> runSubStateT :: Monad m<br>
>              => (s -> s') -> (s' -> s) -> StateT s' m a -> StateT s m a<br>
> runSubStateT to from m =<br>
>   StateT (\s -><br>
>             liftM (\(a,s') -> (a,from s'))<br>
>                   (runStateT m (to s)))<br>
><br>
> Anyone ever needed something like this? Does it already exist in some<br>
> form in the standard libraries?<br>
><br>
> Ciao<br>
> ______________________________<u></u>_________________<br>
> Haskell-Cafe mailing list<br>
> <a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
> <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/<u></u>mailman/listinfo/haskell-cafe</a><br>
<br>
--<br>
Chih-Mao Chen (PkmX)<br>
System Software Laboratory<br>
Department of Computer Science<br>
National Chiao Tung University<br>
______________________________<u></u>_________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/<u></u>mailman/listinfo/haskell-cafe</a><br>
</blockquote></div>