
On Sat, Nov 21, 2009 at 09:07:38PM +0000, Philip Scott wrote:
The final piece is that (->) is an Arrow, the most basic one but still an Arrow, so if you replace a by (->) in the type of second, you get : second :: (->) b c -> (->) (d, b) (d, c) which is just second :: (b -> c) -> (d, b) -> (d, c)
Ahh I see, very clever! There is method to the madness after all; I should never have doubted you Haskell. Thank you for taking the time to explain that :)
Do you know of any good discussions/tutorials on Arrows? I've only managed to find little snippets here and there
The two tutorials linked from the "Bibliogrphy" section of that page are very good: http://www.soi.city.ac.uk/~ross/papers/fop.html http://www.cs.chalmers.se/~rjmh/afp-arrows.pdf You may also be interested in reading the "Category" and "Arrow" sections of the Typeclassopedia: http://www.haskell.org/sitewiki/images/8/85/TMR-Issue13.pdf -Brent