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 HaskellNone
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 j, Groupoid k) => Groupoid (Coproduct j k :: Either a b -> Either a b -> *) # 
Instance details

Defined in Data.Semigroupoid.Coproduct

Methods

inv :: Coproduct j k a0 b0 -> Coproduct j k b0 a0 #

(Semigroupoid j, Semigroupoid k) => Semigroupoid (Coproduct j k :: Either a b -> Either a b -> *) # 
Instance details

Defined in Data.Semigroupoid.Coproduct

Methods

o :: Coproduct j k j0 k1 -> Coproduct j k i j0 -> Coproduct j k i k1 #

(Semigroupoid l, Ob r a2) => Ob (Coproduct l r :: Either a1 b -> Either a1 b -> *) (Right a2 :: Either a1 b) # 
Instance details

Defined in Data.Semigroupoid.Coproduct

Methods

semiid :: Coproduct l r (Right a2) (Right a2) #

(Ob l a2, Semigroupoid r) => Ob (Coproduct l r :: Either a1 b -> Either a1 b -> *) (Left a2 :: Either a1 b) # 
Instance details

Defined in Data.Semigroupoid.Coproduct

Methods

semiid :: Coproduct l r (Left a2) (Left a2) #

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