proarrow-0: Category theory with a central role for profunctors
Safe HaskellNone
LanguageHaskell2010

Proarrow.Object.BinaryProduct

Documentation

class CategoryOf k => HasBinaryProducts k where Source Comments #

Minimal complete definition

fst', snd', (&&&)

Associated Types

type (a :: k) && (b :: k) :: k infixl 5 Source Comments #

Methods

fst' :: forall (a :: k) (b :: k). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: k) (b :: k). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: k) (x :: k) (y :: k). (a ~> x) -> (a ~> y) -> a ~> (x && y) infixl 5 Source Comments #

(***) :: forall (a :: k) (b :: k) (x :: k) (y :: k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) infixl 5 Source Comments #

Instances

Instances details
HasBinaryProducts BOOL Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Associated Types

type 'FLS && 'FLS 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'FLS && 'FLS = 'FLS
type 'FLS && 'TRU 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'FLS && 'TRU = 'FLS
type 'TRU && 'FLS 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'TRU && 'FLS = 'FLS
type 'TRU && 'TRU 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'TRU && 'TRU = 'TRU

Methods

fst' :: forall (a :: BOOL) (b :: BOOL). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: BOOL) (b :: BOOL). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: BOOL) (x :: BOOL) (y :: BOOL). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: BOOL) (b :: BOOL) (x :: BOOL) (y :: BOOL). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

HasBinaryProducts KIND Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Associated Types

type ('K l :: KIND) && ('K r :: KIND) 
Instance details

Defined in Proarrow.Category.Instance.Cat

type ('K l :: KIND) && ('K r :: KIND) = 'K (l, r)

Methods

fst' :: forall (a :: KIND) (b :: KIND). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: KIND) (b :: KIND). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: KIND) (x :: KIND) (y :: KIND). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: KIND) (b :: KIND) (x :: KIND) (y :: KIND). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

HasBinaryProducts CONSTRAINT Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Associated Types

type ('CNSTRNT l :: CONSTRAINT) && ('CNSTRNT r :: CONSTRAINT) 
Instance details

Defined in Proarrow.Category.Instance.Constraint

type ('CNSTRNT l :: CONSTRAINT) && ('CNSTRNT r :: CONSTRAINT) = 'CNSTRNT (l, r)

Methods

fst' :: forall (a :: CONSTRAINT) (b :: CONSTRAINT). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: CONSTRAINT) (b :: CONSTRAINT). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: CONSTRAINT) (x :: CONSTRAINT) (y :: CONSTRAINT). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (x :: CONSTRAINT) (y :: CONSTRAINT). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

HasBinaryProducts UNIT Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type 'U && 'U 
Instance details

Defined in Proarrow.Object.BinaryProduct

type 'U && 'U = 'U

Methods

fst' :: forall (a :: UNIT) (b :: UNIT). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: UNIT) (b :: UNIT). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: UNIT) (x :: UNIT) (y :: UNIT). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: UNIT) (b :: UNIT) (x :: UNIT) (y :: UNIT). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

HasBinaryProducts Type Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type (a :: Type) && (b :: Type) 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: Type) && (b :: Type) = (a, b)

Methods

fst' :: Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall a b x y. (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

HasBinaryCoproducts k => HasBinaryProducts (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

fst' :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

HasBinaryProducts k => HasBinaryProducts (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

fst' :: forall (a :: PROD k) (b :: PROD k). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: PROD k) (b :: PROD k). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: PROD k) (x :: PROD k) (y :: PROD k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: PROD k) (b :: PROD k) (x :: PROD k) (y :: PROD k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

(CategoryOf j, CategoryOf k) => HasBinaryProducts (PRO j k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

fst' :: forall (a :: PRO j k) (b :: PRO j k). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: PRO j k) (b :: PRO j k). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: PRO j k) (x :: PRO j k) (y :: PRO j k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: PRO j k) (b :: PRO j k) (x :: PRO j k) (y :: PRO j k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

(HasBinaryProducts j, HasBinaryProducts k) => HasBinaryProducts (j, k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

fst' :: forall (a :: (j, k)) (b :: (j, k)). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: (j, k)) (b :: (j, k)). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: (j, k)) (x :: (j, k)) (y :: (j, k)). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: (j, k)) (b :: (j, k)) (x :: (j, k)) (y :: (j, k)). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

fst :: forall {k} (a :: k) (b :: k). (HasBinaryProducts k, Ob a, Ob b) => (a && b) ~> a Source Comments #

snd :: forall {k} (a :: k) (b :: k). (HasBinaryProducts k, Ob a, Ob b) => (a && b) ~> b Source Comments #

first :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryProducts k, Ob c) => (a ~> b) -> (a && c) ~> (b && c) Source Comments #

second :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryProducts k, Ob c) => (a ~> b) -> (c && a) ~> (c && b) Source Comments #

class (a ** b) ~ (a && b) => TensorIsProduct (a :: k) (b :: k) Source Comments #

Instances

Instances details
(a ** b) ~ (a && b) => TensorIsProduct (a :: k) (b :: k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

class (HasProducts k, Monoidal k, (Unit :: k) ~ (TerminalObject :: k), forall (a :: k) (b :: k). TensorIsProduct a b) => Cartesian k Source Comments #

Instances

Instances details
(HasProducts k, Monoidal k, (Unit :: k) ~ (TerminalObject :: k), forall (a :: k) (b :: k). TensorIsProduct a b) => Cartesian k Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

leftUnitorProd :: forall k (a :: k). HasProducts k => Obj a -> ((TerminalObject :: k) && a) ~> a Source Comments #

leftUnitorProdInv :: forall k (a :: k). HasProducts k => Obj a -> a ~> ((TerminalObject :: k) && a) Source Comments #

rightUnitorProd :: forall k (a :: k). HasProducts k => Obj a -> (a && (TerminalObject :: k)) ~> a Source Comments #

rightUnitorProdInv :: forall k (a :: k). HasProducts k => Obj a -> a ~> (a && (TerminalObject :: k)) Source Comments #

associatorProd :: forall k (a :: k) (b :: k) (c :: k). HasProducts k => Obj a -> Obj b -> Obj c -> ((a && b) && c) ~> (a && (b && c)) Source Comments #

associatorProdInv :: forall k (a :: k) (b :: k) (c :: k). HasProducts k => Obj a -> Obj b -> Obj c -> (a && (b && c)) ~> ((a && b) && c) Source Comments #

swapProd :: forall {k} (a :: k) (b :: k). HasBinaryProducts k => Obj a -> Obj b -> (a && b) ~> (b && a) Source Comments #

newtype PROD k Source Comments #

Constructors

PR k 

Instances

Instances details
HasProducts k => Monoidal (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

par :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k) (d :: PROD k). (a ~> b) -> (c ~> d) -> (a ** c) ~> (b ** d) Source Comments #

leftUnitor :: forall (a :: PROD k). Obj a -> ((Unit :: PROD k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: PROD k). Obj a -> a ~> ((Unit :: PROD k) ** a) Source Comments #

rightUnitor :: forall (a :: PROD k). Obj a -> (a ** (Unit :: PROD k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: PROD k). Obj a -> a ~> (a ** (Unit :: PROD k)) Source Comments #

associator :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

HasProducts k => SymMonoidal (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

swap' :: forall (a :: PROD k) (b :: PROD k). Obj a -> Obj b -> (a ** b) ~> (b ** a) Source Comments #

CategoryOf k => CategoryOf (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (~>) = Prod :: PROD k -> PROD k -> Type
HasBinaryProducts k => HasBinaryProducts (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

fst' :: forall (a :: PROD k) (b :: PROD k). Obj a -> Obj b -> (a && b) ~> a Source Comments #

snd' :: forall (a :: PROD k) (b :: PROD k). Obj a -> Obj b -> (a && b) ~> b Source Comments #

(&&&) :: forall (a :: PROD k) (x :: PROD k) (y :: PROD k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

(***) :: forall (a :: PROD k) (b :: PROD k) (x :: PROD k) (y :: PROD k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Comments #

(CategoryOf j, CategoryOf k) => Closed (PROD (PRO j k)) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Methods

curry' :: forall (a :: PROD (PRO j k)) (b :: PROD (PRO j k)) (c :: PROD (PRO j k)). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: PROD (PRO j k)) (c :: PROD (PRO j k)) (a :: PROD (PRO j k)). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: PROD (PRO j k)) (y :: PROD (PRO j k)) (x :: PROD (PRO j k)) (a :: PROD (PRO j k)). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

HasTerminalObject k => HasTerminalObject (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type TerminalObject 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

terminate' :: forall (a :: PROD k). Obj a -> a ~> (TerminalObject :: PROD k) Source Comments #

CategoryOf k => Promonad (Prod :: PROD k -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

id :: forall (a :: PROD k). Ob a => Prod a a Source Comments #

(.) :: forall (b :: PROD k) (c :: PROD k) (a :: PROD k). Prod b c -> Prod a b -> Prod a c Source Comments #

HasProducts k => MonoidalProfunctor (Prod :: PROD k -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

lift0 :: Prod (Unit :: PROD k) (Unit :: PROD k) Source Comments #

lift2 :: forall (x1 :: PROD k) (x2 :: PROD k) (y1 :: PROD k) (y2 :: PROD k). Prod x1 x2 -> Prod y1 y2 -> Prod (x1 ** y1) (x2 ** y2) Source Comments #

CategoryOf k => Profunctor (Prod :: PROD k -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

dimap :: forall (c :: PROD k) (a :: PROD k) (b :: PROD k) (d :: PROD k). (c ~> a) -> (b ~> d) -> Prod a b -> Prod c d Source Comments #

(\\) :: forall (a :: PROD k) (b :: PROD k) r. ((Ob a, Ob b) => r) -> Prod a b -> r Source Comments #

(HasProducts j, HasCoproducts k, Proalternative p) => MonoidalProfunctor (Alt p :: PROD j -> COPROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Applicative

Methods

lift0 :: Alt p (Unit :: PROD j) (Unit :: COPROD k) Source Comments #

lift2 :: forall (x1 :: PROD j) (x2 :: COPROD k) (y1 :: PROD j) (y2 :: COPROD k). Alt p x1 x2 -> Alt p y1 y2 -> Alt p (x1 ** y1) (x2 ** y2) Source Comments #

(HasProducts j, HasProducts k, Proapplicative p) => MonoidalProfunctor (App p :: PROD j -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Applicative

Methods

lift0 :: App p (Unit :: PROD j) (Unit :: PROD k) Source Comments #

lift2 :: forall (x1 :: PROD j) (x2 :: PROD k) (y1 :: PROD j) (y2 :: PROD k). App p x1 x2 -> App p y1 y2 -> App p (x1 ** y1) (x2 ** y2) Source Comments #

Profunctor p => Profunctor (Alt p :: PROD j -> COPROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Applicative

Methods

dimap :: forall (c :: PROD j) (a :: PROD j) (b :: COPROD k) (d :: COPROD k). (c ~> a) -> (b ~> d) -> Alt p a b -> Alt p c d Source Comments #

(\\) :: forall (a :: PROD j) (b :: COPROD k) r. ((Ob a, Ob b) => r) -> Alt p a b -> r Source Comments #

Profunctor p => Profunctor (App p :: PROD j -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Applicative

Methods

dimap :: forall (c :: PROD j) (a :: PROD j) (b :: PROD k) (d :: PROD k). (c ~> a) -> (b ~> d) -> App p a b -> App p c d Source Comments #

(\\) :: forall (a :: PROD j) (b :: PROD k) r. ((Ob a, Ob b) => r) -> App p a b -> r Source Comments #

type UN ('PR :: j -> PROD j) ('PR k :: PROD j) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

type UN ('PR :: j -> PROD j) ('PR k :: PROD j) = k
type Unit Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (~>) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (~>) = Prod :: PROD k -> PROD k -> Type
type TerminalObject Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

type Ob (a :: PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

type Ob (a :: PROD k) = (Is ('PR :: k -> PROD k) a, Ob (UN ('PR :: k -> PROD k) a))
type (a :: PROD k) ** (b :: PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: PROD k) ** (b :: PROD k) = a && b
type (a :: PROD k) && (b :: PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: PROD k) && (b :: PROD k) = 'PR (UN ('PR :: k -> PROD k) a && UN ('PR :: k -> PROD k) b)
type (p :: PROD (j -> k -> Type)) ~~> (q :: PROD (j -> k -> Type)) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

type (p :: PROD (j -> k -> Type)) ~~> (q :: PROD (j -> k -> Type)) = 'PR (UN ('PR :: (j -> k -> Type) -> PROD (j -> k -> Type)) p :~>: UN ('PR :: (j -> k -> Type) -> PROD (j -> k -> Type)) q)

data Prod (a :: PROD k) (b :: PROD k) where Source Comments #

Constructors

Prod :: forall {k} (a :: PROD k) (b :: PROD k). (Ob a, Ob b) => (UN ('PR :: k -> PROD k) a ~> UN ('PR :: k -> PROD k) b) -> Prod a b 

Instances

Instances details
CategoryOf k => Promonad (Prod :: PROD k -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

id :: forall (a :: PROD k). Ob a => Prod a a Source Comments #

(.) :: forall (b :: PROD k) (c :: PROD k) (a :: PROD k). Prod b c -> Prod a b -> Prod a c Source Comments #

HasProducts k => MonoidalProfunctor (Prod :: PROD k -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

lift0 :: Prod (Unit :: PROD k) (Unit :: PROD k) Source Comments #

lift2 :: forall (x1 :: PROD k) (x2 :: PROD k) (y1 :: PROD k) (y2 :: PROD k). Prod x1 x2 -> Prod y1 y2 -> Prod (x1 ** y1) (x2 ** y2) Source Comments #

CategoryOf k => Profunctor (Prod :: PROD k -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

dimap :: forall (c :: PROD k) (a :: PROD k) (b :: PROD k) (d :: PROD k). (c ~> a) -> (b ~> d) -> Prod a b -> Prod c d Source Comments #

(\\) :: forall (a :: PROD k) (b :: PROD k) r. ((Ob a, Ob b) => r) -> Prod a b -> r Source Comments #

mkProd :: forall k (a :: k) (b :: k). CategoryOf k => (a ~> b) -> Prod ('PR a) ('PR b) Source Comments #

Orphan instances

Monoidal UNIT Source Comments # 
Instance details

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: UNIT) ** (b :: UNIT) 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: UNIT) ** (b :: UNIT) = a && b

Methods

par :: forall (a :: UNIT) (b :: UNIT) (c :: UNIT) (d :: UNIT). (a ~> b) -> (c ~> d) -> (a ** c) ~> (b ** d) Source Comments #

leftUnitor :: forall (a :: UNIT). Obj a -> ((Unit :: UNIT) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: UNIT). Obj a -> a ~> ((Unit :: UNIT) ** a) Source Comments #

rightUnitor :: forall (a :: UNIT). Obj a -> (a ** (Unit :: UNIT)) ~> a Source Comments #

rightUnitorInv :: forall (a :: UNIT). Obj a -> a ~> (a ** (Unit :: UNIT)) Source Comments #

associator :: forall (a :: UNIT) (b :: UNIT) (c :: UNIT). Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: UNIT) (b :: UNIT) (c :: UNIT). Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal Type Source Comments # 
Instance details

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: Type) ** (b :: Type) 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: Type) ** (b :: Type) = a && b

Methods

par :: (a ~> b) -> (c ~> d) -> (a ** c) ~> (b ** d) Source Comments #

leftUnitor :: Obj a -> ((Unit :: Type) ** a) ~> a Source Comments #

leftUnitorInv :: Obj a -> a ~> ((Unit :: Type) ** a) Source Comments #

rightUnitor :: Obj a -> (a ** (Unit :: Type)) ~> a Source Comments #

rightUnitorInv :: Obj a -> a ~> (a ** (Unit :: Type)) Source Comments #

associator :: Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

SymMonoidal UNIT Source Comments # 
Instance details

Methods

swap' :: forall (a :: UNIT) (b :: UNIT). Obj a -> Obj b -> (a ** b) ~> (b ** a) Source Comments #

SymMonoidal Type Source Comments # 
Instance details

Methods

swap' :: Obj a -> Obj b -> (a ** b) ~> (b ** a) Source Comments #

MonoidalProfunctor Unit Source Comments # 
Instance details

Methods

lift0 :: Unit (Unit :: UNIT) (Unit :: UNIT) Source Comments #

lift2 :: forall (x1 :: UNIT) (x2 :: UNIT) (y1 :: UNIT) (y2 :: UNIT). Unit x1 x2 -> Unit y1 y2 -> Unit (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (->) Source Comments # 
Instance details

Methods

lift0 :: (Unit :: Type) -> (Unit :: Type) Source Comments #

lift2 :: (x1 -> x2) -> (y1 -> y2) -> (x1 ** y1) -> (x2 ** y2) Source Comments #