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
LanguageHaskell98

Data.Semigroupoid.Product

Description

 

Documentation

data Product j k a b where #

Constructors

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

Instances

Semifunctor * (*, *) (Bi * * Either) (Product * * * * (->) (->)) (->) # 

Methods

semimap :: c a b -> d ((->) a) ((->) b) #

Semifunctor * (*, *) (Bi * * (,)) (Product * * * * (->) (->)) (->) # 

Methods

semimap :: c a b -> d ((->) a) ((->) b) #

Bind m => Semifunctor * (*, *) (Bi * * Either) (Product * * * * (Kleisli m) (Kleisli m)) (Kleisli m) # 

Methods

semimap :: c a b -> d (Kleisli m a) (Kleisli m b) #

Bind m => Semifunctor * (*, *) (Bi * * (,)) (Product * * * * (Kleisli m) (Kleisli m)) (Kleisli m) # 

Methods

semimap :: c a b -> d (Kleisli m a) (Kleisli m b) #

(Groupoid k1 j, Groupoid k k2) => Groupoid (k1, k) (Product k k k1 k1 j k2) # 

Methods

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

(Semigroupoid k1 j, Semigroupoid k k2) => Semigroupoid (k1, k) (Product k k k1 k1 j k2) # 

Methods

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

(Ob k1 l a, Ob k r b) => Ob (k1, k) (Product k k k1 k1 l r) ((,) k1 k a b) # 

Methods

semiid :: (k1, k) a b a a #

distributeDualProduct :: Dual (Product j k) a b -> Product (Dual j) (Dual k) a b #

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