module ArrowPlus(module Arrow, module ArrowPlus) where import Arrow infixr 6 <|> infixr 6 <+> class Arrow q => ArrowZero q where zeroA :: q a b class ArrowZero q => ArrowPlus q where (<|>) :: q a b -> q a c -> q a (Either b c) (<+>) :: q a b -> q a b -> q a b -- Default instances: f <|> g = (f >>> arr Left) <+> (g >>> arr Right) f <+> g = (f <|> g) >>> arr (either id id)