
Nicolas Pouillard wrote:
Excerpts from Neil Brown's message of Tue Nov 03 13:45:42 +0100 2009:
Hi,
I was thinking about some of my code today, and I realised that where I have an arrow in my code, A b c, the type (A b) is also a functor. The definition is (see http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Arrow.htm...):
fmap = (^<<) -- Or, in long form: fmap f x = arr f <<< x
Out of curiosity, and since this is a typical haskell-cafe question, does this definition of fmap hold for all arrows?
Yes, as shown by the 'WrappedArrow' newtype:
http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Applicati...
While I don't wish to suggest that "all arrows are functors" is false, I think the argument "yes, because this library says so" is not too strong. Let us not forget, according to *the libraries*, Double is in Enum - which, I think you'll agree, is just weird...