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
Portabilitypolykinds
Safe HaskellSafe-Inferred
LanguageHaskell98

Data.Semigroupoid.Product

Description

 

Documentation

data Product j k a b where Source

Constructors

Pair :: j a b -> k a' b' -> Product j k `(a, a')` `(b, b')` 

Instances

Semifunctor * ((,) * *) (Bi * * Either) (Product * * * * (->) (->)) (->) 
Semifunctor * ((,) * *) (Bi * * (,)) (Product * * * * (->) (->)) (->) 
Bind m => Semifunctor * ((,) * *) (Bi * * Either) (Product * * * * (Kleisli m) (Kleisli m)) (Kleisli m) 
Bind m => Semifunctor * ((,) * *) (Bi * * (,)) (Product * * * * (Kleisli m) (Kleisli m)) (Kleisli m) 
(Groupoid k j, Groupoid k1 k2) => Groupoid ((,) k k) (Product k k k k j k) 
(Semigroupoid k j, Semigroupoid k1 k2) => Semigroupoid ((,) k k) (Product k k k k j k) 
(Ob k l a, Ob k1 r b) => Ob ((,) k k) (Product k k k k l r) ((,) k k a b) 

factorDualProduct :: Product (Dual j) (Dual k) a b -> Dual (Product j k) a b Source