The rule
arr id = id
interacts unpleasantly with the advice to define
id = arr id
in instances of Category that are also instances of Arrow (#2722).
Also changed a couple of >>>'s to .'s in later rules.
f &&& g = arr (\b -> (b,b)) >>> f *** g
{-# RULES
f &&& g = arr (\b -> (b,b)) >>> f *** g
{-# RULES
-"identity"
- arr id = id
"compose/arr" forall f g .
(arr f) . (arr g) = arr (f . g)
"first/arr" forall f .
"compose/arr" forall f g .
(arr f) . (arr g) = arr (f . g)
"first/arr" forall f .
"fanin/arr" forall f g .
arr f ||| arr g = arr (f ||| g)
"compose/left" forall f g .
"fanin/arr" forall f g .
arr f ||| arr g = arr (f ||| g)
"compose/left" forall f g .
- left f >>> left g = left (f >>> g)
+ left f . left g = left (f . g)
"compose/right" forall f g .
"compose/right" forall f g .
- right f >>> right g = right (f >>> g)
+ right f . right g = right (f . g)
#-}
instance ArrowChoice (->) where
#-}
instance ArrowChoice (->) where