
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@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe