Is it common to make a type an instance of both Arrow and Functor type
class? If a type is both instance of Arrow and Functor, would you expect
that fmap = (^<<) ? If yes, how about adding this as expected law to the
Control.Arrow documentation? Same question for Applicative functors and
liftA2 (,) = (&&&). (Btw. Control.Arrow haddock documentation does not
mention any Arrow law so far.)