[Haskell-cafe] Question about "Arrows and Computation" by Paterson

Reilly Hayes rfh at reillyhayes.com
Fri Mar 24 14:24:00 EST 2006

On Thu, 2006-03-23 at 17:37 +0000, Ross Paterson wrote:

> Try this picture:
>       (s,(b,d))
>           |
>           | unassoc
>           v
>     ((s,b),  d)
>        |     |
>      f |  x  | id
>        v     v
>     ((s',c), d)
>           |
>           | assoc
>           v
>       (s',(c,d))
> The state type is not changed, but its value can be.  It is the second
> part of the input (d) that is passed through.

Thank you.  Your diagram was very helpful.  I was tracing the values
correctly through unassoc and assoc but missing the point of the
exercise.  The problem was that I entirely misunderstood the statement,
" ... while 'first' routes the state through f."  I took it to mean
that, in the State Arrow, you were using 'first' as a mechanism to
provide access to State.  Now I understand state *must* be threaded
through whichever half of the input tuple is going to be acted on.  In
retrospect, it's obvious.  

-reilly hayes

> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list