------------------------------------------------------------------------
-- The main GArrow class
-class Category g => GArrow g (**) u | (**) -> u, u -> (**) where
+class Category g => GArrow g (**) u | g (**) -> u, g u -> (**) where
--id :: g x x
--comp :: g x y -> g y z -> g x z
ga_first :: g x y -> g (x ** z) (y ** z)