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 HaskellNone
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

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) #

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

Methods

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

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

Methods

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

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

Methods

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

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

Methods

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

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

Methods

semiid :: (k2, k1) 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 #