semigroupoid-extras-5: Semigroupoids that depend on PolyKinds

Copyright(C) 2011-2015 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
Portabilityportable
Safe HaskellSafe
LanguageHaskell98

Data.Semigroupoid.Coproduct

Description

 

Documentation

data Coproduct j k a b where #

Constructors

L :: j a b -> Coproduct j k (Left a) (Left b) 
R :: k a b -> Coproduct j k (Right a) (Right b) 

Instances

(Groupoid a j, Groupoid b k) => Groupoid (Either a b) (Coproduct b b a a j k) # 

Methods

inv :: k1 a b -> k1 b a #

(Semigroupoid a j, Semigroupoid b k) => Semigroupoid (Either a b) (Coproduct b b a a j k) # 

Methods

o :: c j k1 -> c i j -> c i k1 #

(Semigroupoid a l, Ob b r a1) => Ob (Either a b) (Coproduct b b a a l r) (Right a b a1) # 

Methods

semiid :: Right a b a1 a a #

(Ob a l a1, Semigroupoid b r) => Ob (Either a b) (Coproduct b b a a l r) (Left a b a1) # 

Methods

semiid :: Left a b a1 a a #

factorDualCoproduct :: Coproduct (Dual j) (Dual k) a b -> Dual (Coproduct j k) a b #