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

Proarrow.Category.Monoidal

Documentation

class (CategoryOf k, Ob (Unit :: k)) => Monoidal k where Source Comments #

Associated Types

type Unit :: k Source Comments #

type (a :: k) ** (b :: k) :: k Source Comments #

Methods

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

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

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

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

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

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

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

Instances

Instances details
Monoidal BOOL Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Bool

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

Defined in Proarrow.Category.Instance.Bool

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

Methods

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

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

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

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

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

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

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

Monoidal CONSTRAINT Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Constraint

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

Defined in Proarrow.Category.Instance.Constraint

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

Methods

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

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

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

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

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

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

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

Monoidal LINEAR Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Linear

type Unit = 'L ()
type ('L a :: LINEAR) ** ('L b :: LINEAR) 
Instance details

Defined in Proarrow.Category.Instance.Linear

type ('L a :: LINEAR) ** ('L b :: LINEAR) = 'L (a, b)

Methods

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

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

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

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

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

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

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

Monoidal Nat Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Simplex

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Simplex

type Unit = 'Z
type (a :: Nat) ** (b :: Nat) 
Instance details

Defined in Proarrow.Category.Instance.Simplex

type (a :: Nat) ** (b :: Nat) = a + b

Methods

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

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

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

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

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

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

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

Monoidal UNIT Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

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

Defined in Proarrow.Object.BinaryProduct

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 #

CategoryOf k => Monoidal (LIST k) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.List

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.List

type Unit = 'L ('[] :: [k])

Methods

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

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

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

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

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

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

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

Monoidal k => Monoidal (REV k) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

type Unit = 'R (Unit :: k)

Methods

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

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

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

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

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

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

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

Monoidal k => Monoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Opposite

type Unit = 'OP (Unit :: k)

Methods

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

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

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

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

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

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

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

HasCoproducts k => Monoidal (COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Unit = 'COPR (InitialObject :: k)

Methods

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

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

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

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

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

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

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

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 #

Monoidal k => Monoidal [k] Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal

type Unit = '[] :: [k]

Methods

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

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

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

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

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

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

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

(Monoidal k, ob (Unit :: k), forall (a :: k) (b :: k). (ob a, ob b) => IsObMult ob a b) => Monoidal (SUBCAT ob) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Sub

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Sub

type Unit = 'SUB (Unit :: k) :: SUBCAT ob

Methods

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

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

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

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

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

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

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

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

Defined in Proarrow.Profunctor.Day

Associated Types

type Unit 
Instance details

Defined in Proarrow.Profunctor.Day

type Unit = DayUnit :: j -> k -> Type

Methods

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

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

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

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

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

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

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

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

Defined in Proarrow.Category.Instance.Product

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Product

type Unit = '(Unit :: j, Unit :: k)

Methods

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

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

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

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

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

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

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

Monoidal (Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Nat

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Nat

type Unit = Identity
type (f :: Type -> Type) ** (g :: Type -> Type) 
Instance details

Defined in Proarrow.Category.Instance.Nat

type (f :: Type -> Type) ** (g :: Type -> Type) = Compose f g

Methods

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

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

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

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

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

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

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

(Bicategory kk, Ob0 kk k) => Monoidal (ENDO kk k) Source Comments #

The monoidal subcategory of a bicategory for a single object.

Instance details

Defined in Proarrow.Category.Monoidal.Endo

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal.Endo

type Unit = 'E (I :: kk k k)

Methods

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

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

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

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

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

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

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

class Monoidal k => SymMonoidal k where Source Comments #

Methods

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

Instances

Instances details
SymMonoidal BOOL Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Methods

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

SymMonoidal CONSTRAINT Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Methods

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

SymMonoidal LINEAR Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

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

SymMonoidal UNIT Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

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

SymMonoidal Type Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

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

SymMonoidal k => SymMonoidal (REV k) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

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

SymMonoidal k => SymMonoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

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

HasCoproducts k => SymMonoidal (COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

swap' :: forall (a :: COPROD k) (b :: COPROD k). Obj a -> Obj b -> (a ** b) ~> (b ** a) 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 #

(SymMonoidal k, ob (Unit :: k), forall (a :: k) (b :: k). (ob a, ob b) => IsObMult ob a b) => SymMonoidal (SUBCAT ob) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Sub

Methods

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

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

Defined in Proarrow.Profunctor.Day

Methods

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

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

Defined in Proarrow.Category.Instance.Product

Methods

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

swap :: forall {k} (a :: k) (b :: k). (SymMonoidal k, Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

isObPar :: forall {k} (a :: k) (b :: k) r. (Monoidal k, Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

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

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

type family (as :: [k]) ++ (bs :: [k]) :: [k] where ... Source Comments #

Equations

('[] :: [k]) ++ (bs :: [k]) = bs 
(a ': as :: [k]) ++ (bs :: [k]) = a ': (as ++ bs) 

data SList (as :: [k]) where Source Comments #

Constructors

Nil :: forall {k}. SList ('[] :: [k]) 
Cons :: forall {k} (a :: k) (as1 :: [k]). (Ob a, Ob as1) => Obj a -> SList as1 -> SList (a ': as1) 

class CategoryOf k => IsList (as :: [k]) where Source Comments #

Methods

sList :: SList as Source Comments #

Instances

Instances details
CategoryOf k => IsList ('[] :: [k]) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

Methods

sList :: SList ('[] :: [k]) Source Comments #

(Ob a, Ob as) => IsList (a ': as :: [k]) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

Methods

sList :: SList (a ': as) Source Comments #

type family Fold (as :: [k]) :: k where ... Source Comments #

Equations

Fold ('[] :: [k]) = Unit :: k 
Fold ('[a] :: [k]) = a 
Fold (a ': as :: [k]) = a ** Fold as 

fold :: forall {k} (as :: [k]). Monoidal k => SList as -> Fold as ~> Fold as Source Comments #

concatFold :: forall {k} (as :: [k]) (bs :: [k]). (Ob as, Ob bs, Monoidal k) => (Fold as ** Fold bs) ~> Fold (as ++ bs) Source Comments #

splitFold :: forall {k} (as :: [k]) (bs :: [k]). (Ob as, Ob bs, Monoidal k) => Fold (as ++ bs) ~> (Fold as ** Fold bs) Source Comments #

data Strictified (as :: [k]) (bs :: [k]) where Source Comments #

Constructors

Str :: forall {k} (as :: [k]) (bs :: [k]). (Ob as, Ob bs) => (Fold as ~> Fold bs) -> Strictified as bs 

Instances

Instances details
Monoidal k => Promonad (Strictified :: [k] -> [k] -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

Methods

id :: forall (a :: [k]). Ob a => Strictified a a Source Comments #

(.) :: forall (b :: [k]) (c :: [k]) (a :: [k]). Strictified b c -> Strictified a b -> Strictified a c Source Comments #

Monoidal k => Profunctor (Strictified :: [k] -> [k] -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

Methods

dimap :: forall (c :: [k]) (a :: [k]) (b :: [k]) (d :: [k]). (c ~> a) -> (b ~> d) -> Strictified a b -> Strictified c d Source Comments #

(\\) :: forall (a :: [k]) (b :: [k]) r. ((Ob a, Ob b) => r) -> Strictified a b -> r Source Comments #

singleton :: forall k (a :: k). CategoryOf k => Obj a -> Obj '[a] Source Comments #

class (Monoidal j, Monoidal k, Profunctor p) => MonoidalProfunctor (p :: PRO j k) where Source Comments #

Methods

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

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

Instances

Instances details
MonoidalProfunctor Forget Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

lift0 :: Forget (Unit :: LINEAR) (Unit :: Type) Source Comments #

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

MonoidalProfunctor Unit Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

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 Free Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

lift0 :: Free (Unit :: Type) (Unit :: LINEAR) Source Comments #

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

MonoidalProfunctor (Reader r :: Type -> Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Promonad.Reader

Methods

lift0 :: Reader r (Unit :: Type) (Unit :: Type) Source Comments #

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

Monoid m => MonoidalProfunctor (Writer m :: Type -> Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Promonad.Writer

Methods

lift0 :: Writer m (Unit :: Type) (Unit :: Type) Source Comments #

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

Monoidal k => MonoidalProfunctor (Hom :: k -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

Methods

lift0 :: Hom (Unit :: k) (Unit :: k) Source Comments #

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

MonoidalProfunctor (->) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

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

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

(Monoidal j, Monoidal k) => MonoidalProfunctor (TerminalProfunctor :: j -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Terminal

Methods

lift0 :: TerminalProfunctor (Unit :: j) (Unit :: k) Source Comments #

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

(SymMonoidal k, Ob s) => MonoidalProfunctor (State s :: k -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Promonad.State

Methods

lift0 :: State s (Unit :: k) (Unit :: k) Source Comments #

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

(MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (p :*: q :: j -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Product

Methods

lift0 :: (p :*: q) (Unit :: j) (Unit :: k) Source Comments #

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

(MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (p :.: q :: j1 -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Composition

Methods

lift0 :: (p :.: q) (Unit :: j1) (Unit :: k) Source Comments #

lift2 :: forall (x1 :: j1) (x2 :: k) (y1 :: j1) (y2 :: k). (p :.: q) x1 x2 -> (p :.: q) y1 y2 -> (p :.: q) (x1 ** y1) (x2 ** y2) Source Comments #

HasCoproducts k => MonoidalProfunctor (Coprod :: COPROD k -> COPROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

lift0 :: Coprod (Unit :: COPROD k) (Unit :: COPROD k) Source Comments #

lift2 :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod x1 x2 -> Coprod y1 y2 -> Coprod (x1 ** y1) (x2 ** y2) 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 #

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

(Monoidal k, ob (Unit :: k), forall (a :: k) (b :: k). (ob a, ob b) => IsObMult ob a b) => MonoidalProfunctor (Sub :: SUBCAT ob -> SUBCAT ob -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Sub

Methods

lift0 :: Sub (Unit :: SUBCAT ob) (Unit :: SUBCAT ob) Source Comments #

lift2 :: forall (x1 :: SUBCAT ob) (x2 :: SUBCAT ob) (y1 :: SUBCAT ob) (y2 :: SUBCAT ob). Sub x1 x2 -> Sub y1 y2 -> Sub (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (Nat :: (Type -> Type) -> (Type -> Type) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Nat

Methods

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

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

newtype Hom (a :: k) (b :: k) Source Comments #

Constructors

Hom 

Fields

Instances

Instances details
Monoidal k => MonoidalProfunctor (Hom :: k -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

Methods

lift0 :: Hom (Unit :: k) (Unit :: k) Source Comments #

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

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

Defined in Proarrow.Category.Monoidal

Methods

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

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

Orphan instances

Monoidal k => CategoryOf [k] Source Comments # 
Instance details

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Monoidal

type (~>) = Strictified :: [k] -> [k] -> Type