FIX #2722: update RULES for the Category/Arrow split
authorRoss Paterson <ross@soi.city.ac.uk>
Tue, 4 Nov 2008 14:45:15 +0000 (14:45 +0000)
committerRoss Paterson <ross@soi.city.ac.uk>
Tue, 4 Nov 2008 14:45:15 +0000 (14:45 +0000)
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.

Control/Arrow.hs

index 3fa7e1e..4606b4d 100644 (file)
@@ -94,8 +94,6 @@ class Category a => Arrow a where
         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 .
@@ -217,9 +215,9 @@ class Arrow a => ArrowChoice a where
 "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 .
-                right f >>> right g = right (f >>> g)
+                right f . right g = right (f . g)
  #-}
 
 instance ArrowChoice (->) where