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 :: * -> * -> *) # 
Instance details

Defined in Data.Semifunctor

Methods

semimap :: Product (Kleisli m) (Kleisli m) a b -> Kleisli m (Bi Either a) (Bi Either b) #

Bind m => Semifunctor (Bi (,)) (Product (Kleisli m) (Kleisli m) :: (*, *) -> (*, *) -> *) (Kleisli m :: * -> * -> *) # 
Instance details

Defined in Data.Semifunctor

Methods

semimap :: Product (Kleisli m) (Kleisli m) a b -> Kleisli m (Bi (,) a) (Bi (,) b) #

Semifunctor (Bi Either) (Product ((->) :: * -> * -> *) ((->) :: * -> * -> *)) ((->) :: * -> * -> *) # 
Instance details

Defined in Data.Semifunctor

Methods

semimap :: Product (->) (->) a b -> Bi Either a -> Bi Either b #

Semifunctor (Bi (,)) (Product ((->) :: * -> * -> *) ((->) :: * -> * -> *)) ((->) :: * -> * -> *) # 
Instance details

Defined in Data.Semifunctor

Methods

semimap :: Product (->) (->) a b -> Bi (,) a -> Bi (,) b #

(Groupoid j, Groupoid k3) => Groupoid (Product j k3 :: (k2, k1) -> (k2, k1) -> *) # 
Instance details

Defined in Data.Semigroupoid.Product

Methods

inv :: Product j k3 a b -> Product j k3 b a #

(Semigroupoid j, Semigroupoid k3) => Semigroupoid (Product j k3 :: (k2, k1) -> (k2, k1) -> *) # 
Instance details

Defined in Data.Semigroupoid.Product

Methods

o :: Product j k3 j0 k10 -> Product j k3 i j0 -> Product j k3 i k10 #

(Ob l a, Ob r b) => Ob (Product l r :: (k2, k1) -> (k2, k1) -> *) ((,) a b :: (k2, k1)) # 
Instance details

Defined in Data.Semigroupoid.Product

Methods

semiid :: Product l r (a, b) (a, b) #

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 #