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

Proarrow.Category.Monoidal

Documentation

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

Methods

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

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

Instances

Instances details
MonoidalProfunctor Booleans Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Methods

par0 :: Booleans (Unit :: BOOL) (Unit :: BOOL) Source Comments #

par :: forall (x1 :: BOOL) (x2 :: BOOL) (y1 :: BOOL) (y2 :: BOOL). Booleans x1 x2 -> Booleans y1 y2 -> Booleans (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Cat Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

par0 :: Cat (Unit :: KIND) (Unit :: KIND) Source Comments #

par :: forall (x1 :: KIND) (x2 :: KIND) (y1 :: KIND) (y2 :: KIND). Cat x1 x2 -> Cat y1 y2 -> Cat (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (:-) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Methods

par0 :: (Unit :: CONSTRAINT) :- (Unit :: CONSTRAINT) Source Comments #

par :: forall (x1 :: CONSTRAINT) (x2 :: CONSTRAINT) (y1 :: CONSTRAINT) (y2 :: CONSTRAINT). (x1 :- x2) -> (y1 :- y2) -> (x1 ** y1) :- (x2 ** y2) Source Comments #

MonoidalProfunctor Linear Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: Linear (Unit :: LINEAR) (Unit :: LINEAR) Source Comments #

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

MonoidalProfunctor Forget Source Comments #

Forget is a lax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

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

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

MonoidalProfunctor Pointed Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

Methods

par0 :: Pointed (Unit :: POINTED) (Unit :: POINTED) Source Comments #

par :: forall (x1 :: POINTED) (x2 :: POINTED) (y1 :: POINTED) (y2 :: POINTED). Pointed x1 x2 -> Pointed y1 y2 -> Pointed (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Simplex Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Simplex

Methods

par0 :: Simplex (Unit :: Nat) (Unit :: Nat) Source Comments #

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

MonoidalProfunctor Unit Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

par0 :: Unit (Unit :: ()) (Unit :: ()) Source Comments #

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

MonoidalProfunctor Free Source Comments #

Free is a lax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

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

par :: forall (x1 :: LINEAR) x2 (y1 :: LINEAR) y2. 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

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

par :: 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

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

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

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

Defined in Proarrow.Profunctor.Identity

Methods

par0 :: Id (Unit :: k) (Unit :: k) Source Comments #

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

MonoidalProfunctor (->) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

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

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

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

Defined in Proarrow.Profunctor.Terminal

Methods

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

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). 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

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

par :: 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 (RepCostar Free) Source Comments #

Free is also a colax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: RepCostar Free (Unit :: Type) (Unit :: LINEAR) Source Comments #

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

MonoidalProfunctor (RepCostar Forget) Source Comments #

Forget is also a colax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: RepCostar Forget (Unit :: LINEAR) (Unit :: Type) Source Comments #

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

(MonoidalProfunctor r, Adjunction l r, Representable l, Representable r, Monoidal j, Monoidal k) => MonoidalProfunctor (RepCostar l :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Adjunction

Methods

par0 :: RepCostar l (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). RepCostar l x1 x2 -> RepCostar l y1 y2 -> RepCostar l (x1 ** y1) (x2 ** y2) Source Comments #

(Applicative f, Cartesian j, Cartesian k) => MonoidalProfunctor (Star f :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Star

Methods

par0 :: Star f (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). Star f x1 x2 -> Star f y1 y2 -> Star f (x1 ** y1) (x2 ** y2) Source Comments #

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

Defined in Proarrow.Profunctor.Wrapped

Methods

par0 :: Wrapped p (Unit :: k) (Unit :: j) Source Comments #

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

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

Defined in Proarrow.Profunctor.Product

Methods

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

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

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

Defined in Proarrow.Profunctor.Day

Methods

par0 :: Day p q (Unit :: j) (Unit :: k) Source Comments #

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

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

Defined in Proarrow.Profunctor.Composition

Methods

par0 :: (p :.: q) (Unit :: k) (Unit :: j2) Source Comments #

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

(Alternative f, Cartesian k, Cocartesian j) => MonoidalProfunctor (CoprodDom (Star f) :: k -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Star

Methods

par0 :: CoprodDom (Star f) (Unit :: k) (Unit :: COPROD j) Source Comments #

par :: forall (x1 :: k) (x2 :: COPROD j) (y1 :: k) (y2 :: COPROD j). CoprodDom (Star f) x1 x2 -> CoprodDom (Star f) y1 y2 -> CoprodDom (Star f) (x1 ** y1) (x2 ** y2) Source Comments #

CategoryOf k => MonoidalProfunctor (List :: LIST k -> LIST k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.List

Methods

par0 :: List (Unit :: LIST k) (Unit :: LIST k) Source Comments #

par :: forall (x1 :: LIST k) (x2 :: LIST k) (y1 :: LIST k) (y2 :: LIST k). List x1 x2 -> List y1 y2 -> List (x1 ** y1) (x2 ** y2) Source Comments #

Num a => MonoidalProfunctor (Mat :: MatK a -> MatK a -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

par0 :: Mat (Unit :: MatK a) (Unit :: MatK a) Source Comments #

par :: forall (x1 :: MatK a) (x2 :: MatK a) (y1 :: MatK a) (y2 :: MatK a). Mat x1 x2 -> Mat y1 y2 -> Mat (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (PoAsCat :: POCATK Constraint -> POCATK Constraint -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

Methods

par0 :: PoAsCat (Unit :: POCATK Constraint) (Unit :: POCATK Constraint) Source Comments #

par :: forall (x1 :: POCATK Constraint) (x2 :: POCATK Constraint) (y1 :: POCATK Constraint) (y2 :: POCATK Constraint). PoAsCat x1 x2 -> PoAsCat y1 y2 -> PoAsCat (x1 ** y1) (x2 ** y2) Source Comments #

BiCCC k => MonoidalProfunctor (FreeCCC :: FK k -> FK k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Helper.CCC

Methods

par0 :: FreeCCC (Unit :: FK k) (Unit :: FK k) Source Comments #

par :: forall (x1 :: FK k) (x2 :: FK k) (y1 :: FK k) (y2 :: FK k). FreeCCC x1 x2 -> FreeCCC y1 y2 -> FreeCCC (x1 ** y1) (x2 ** y2) Source Comments #

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

Defined in Proarrow.Category.Monoidal.Strictified

Methods

par0 :: Strictified (Unit :: [k]) (Unit :: [k]) Source Comments #

par :: forall (x1 :: [k]) (x2 :: [k]) (y1 :: [k]) (y2 :: [k]). Strictified x1 x2 -> Strictified y1 y2 -> Strictified (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor p => MonoidalProfunctor (Rev p :: REV k -> REV j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

par0 :: Rev p (Unit :: REV k) (Unit :: REV j) Source Comments #

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

MonoidalProfunctor p => MonoidalProfunctor (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

par0 :: Op p (Unit :: OPPOSITE j) (Unit :: OPPOSITE k) Source Comments #

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

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

Defined in Proarrow.Object.BinaryCoproduct

Methods

par0 :: Coprod cat (Unit :: COPROD k) (Unit :: COPROD k) Source Comments #

par :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod cat x1 x2 -> Coprod cat y1 y2 -> Coprod cat (x1 ** y1) (x2 ** y2) Source Comments #

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

Defined in Proarrow.Object.BinaryProduct

Methods

par0 :: Prod cat (Unit :: PROD k) (Unit :: PROD k) Source Comments #

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

(Promonad p, StrongProd p) => MonoidalProfunctor (Kleisli :: KLEISLI p -> KLEISLI p -> Type) Source Comments #

This is not monoidal but premonoidal, i.e. no sliding. So with `par f g` the effects of f happen before the effects of g.

Instance details

Defined in Proarrow.Category.Instance.Kleisli

Methods

par0 :: Kleisli (Unit :: KLEISLI p) (Unit :: KLEISLI p) Source Comments #

par :: forall (x1 :: KLEISLI p) (x2 :: KLEISLI p) (y1 :: KLEISLI p) (y2 :: KLEISLI p). Kleisli x1 x2 -> Kleisli y1 y2 -> Kleisli (x1 ** y1) (x2 ** y2) Source Comments #

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

Defined in Proarrow.Profunctor.Day

Methods

par0 :: Prof (Unit :: j +-> k) (Unit :: j +-> k) Source Comments #

par :: forall (x1 :: j +-> k) (x2 :: j +-> k) (y1 :: j +-> k) (y2 :: j +-> k). Prof x1 x2 -> Prof y1 y2 -> Prof (x1 ** y1) (x2 ** y2) Source Comments #

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

Defined in Proarrow.Category.Instance.Nat

Methods

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

par :: 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 #

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

Defined in Proarrow.Category.Instance.Sub

Methods

par0 :: Sub p (Unit :: SUBCAT ob) (Unit :: SUBCAT ob) Source Comments #

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

(MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (p :**: q :: (k1, k2) -> (j1, j2) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

par0 :: (p :**: q) (Unit :: (k1, k2)) (Unit :: (j1, j2)) Source Comments #

par :: forall (x1 :: (k1, k2)) (x2 :: (j1, j2)) (y1 :: (k1, k2)) (y2 :: (j1, j2)). (p :**: q) x1 x2 -> (p :**: q) y1 y2 -> (p :**: q) (x1 ** y1) (x2 ** y2) Source Comments #

(Bicategory kk, Ob0 kk k) => MonoidalProfunctor (Endo :: ENDO kk k -> ENDO kk k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Endo

Methods

par0 :: Endo (Unit :: ENDO kk k) (Unit :: ENDO kk k) Source Comments #

par :: forall (x1 :: ENDO kk k) (x2 :: ENDO kk k) (y1 :: ENDO kk k) (y2 :: ENDO kk k). Endo x1 x2 -> Endo y1 y2 -> Endo (x1 ** y1) (x2 ** y2) Source Comments #

class (CategoryOf k, MonoidalProfunctor ((~>) :: CAT k)) => Monoidal k where Source Comments #

Associated Types

type Unit :: k Source Comments #

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

Methods

leftUnitor :: forall (a :: k). Ob a => ((Unit :: k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: k). Ob a => a ~> ((Unit :: k) ** a) Source Comments #

rightUnitor :: forall (a :: k). Ob a => (a ** (Unit :: k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: k). Ob a => a ~> (a ** (Unit :: k)) Source Comments #

associator :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob 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

leftUnitor :: forall (a :: BOOL). Ob a => ((Unit :: BOOL) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: BOOL). Ob a => a ~> ((Unit :: BOOL) ** a) Source Comments #

rightUnitor :: forall (a :: BOOL). Ob a => (a ** (Unit :: BOOL)) ~> a Source Comments #

rightUnitorInv :: forall (a :: BOOL). Ob a => a ~> (a ** (Unit :: BOOL)) Source Comments #

associator :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal KIND Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Cat

type Unit = 'K ()
type (l :: KIND) ** (r :: KIND) 
Instance details

Defined in Proarrow.Category.Instance.Cat

type (l :: KIND) ** (r :: KIND) = 'K (UN 'K l, UN 'K r)

Methods

leftUnitor :: forall (a :: KIND). Ob a => ((Unit :: KIND) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: KIND). Ob a => a ~> ((Unit :: KIND) ** a) Source Comments #

rightUnitor :: forall (a :: KIND). Ob a => (a ** (Unit :: KIND)) ~> a Source Comments #

rightUnitorInv :: forall (a :: KIND). Ob a => a ~> (a ** (Unit :: KIND)) Source Comments #

associator :: forall (a :: KIND) (b :: KIND) (c :: KIND). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: KIND) (b :: KIND) (c :: KIND). (Ob a, Ob b, Ob 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

leftUnitor :: forall (a :: CONSTRAINT). Ob a => ((Unit :: CONSTRAINT) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: CONSTRAINT). Ob a => a ~> ((Unit :: CONSTRAINT) ** a) Source Comments #

rightUnitor :: forall (a :: CONSTRAINT). Ob a => (a ** (Unit :: CONSTRAINT)) ~> a Source Comments #

rightUnitorInv :: forall (a :: CONSTRAINT). Ob a => a ~> (a ** (Unit :: CONSTRAINT)) Source Comments #

associator :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (c :: CONSTRAINT). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (c :: CONSTRAINT). (Ob a, Ob b, Ob 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

leftUnitor :: forall (a :: LINEAR). Ob a => ((Unit :: LINEAR) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: LINEAR). Ob a => a ~> ((Unit :: LINEAR) ** a) Source Comments #

rightUnitor :: forall (a :: LINEAR). Ob a => (a ** (Unit :: LINEAR)) ~> a Source Comments #

rightUnitorInv :: forall (a :: LINEAR). Ob a => a ~> (a ** (Unit :: LINEAR)) Source Comments #

associator :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal POINTED Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

type Unit = 'P ()
type ('P a :: POINTED) ** ('P b :: POINTED) 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

type ('P a :: POINTED) ** ('P b :: POINTED) = 'P (a, b)

Methods

leftUnitor :: forall (a :: POINTED). Ob a => ((Unit :: POINTED) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: POINTED). Ob a => a ~> ((Unit :: POINTED) ** a) Source Comments #

rightUnitor :: forall (a :: POINTED). Ob a => (a ** (Unit :: POINTED)) ~> a Source Comments #

rightUnitorInv :: forall (a :: POINTED). Ob a => a ~> (a ** (Unit :: POINTED)) Source Comments #

associator :: forall (a :: POINTED) (b :: POINTED) (c :: POINTED). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: POINTED) (b :: POINTED) (c :: POINTED). (Ob a, Ob b, Ob 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

leftUnitor :: forall (a :: Nat). Ob a => ((Unit :: Nat) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: Nat). Ob a => a ~> ((Unit :: Nat) ** a) Source Comments #

rightUnitor :: forall (a :: Nat). Ob a => (a ** (Unit :: Nat)) ~> a Source Comments #

rightUnitorInv :: forall (a :: Nat). Ob a => a ~> (a ** (Unit :: Nat)) Source Comments #

associator :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal () Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryProduct

type Unit = TerminalObject :: ()
type (a :: ()) ** (b :: ()) 
Instance details

Defined in Proarrow.Object.BinaryProduct

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

Methods

leftUnitor :: forall (a :: ()). Ob a => ((Unit :: ()) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: ()). Ob a => a ~> ((Unit :: ()) ** a) Source Comments #

rightUnitor :: forall (a :: ()). Ob a => (a ** (Unit :: ())) ~> a Source Comments #

rightUnitorInv :: forall (a :: ()). Ob a => a ~> (a ** (Unit :: ())) Source Comments #

associator :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob 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

leftUnitor :: Ob a => ((Unit :: Type) ** a) ~> a Source Comments #

leftUnitorInv :: Ob a => a ~> ((Unit :: Type) ** a) Source Comments #

rightUnitor :: Ob a => (a ** (Unit :: Type)) ~> a Source Comments #

rightUnitorInv :: Ob a => a ~> (a ** (Unit :: Type)) Source Comments #

associator :: (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: LIST k) (b :: LIST k) (c :: LIST k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: LIST k) (b :: LIST k) (c :: LIST k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Num a => Monoidal (MatK a) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Mat

type Unit = 'M ('S 'Z) :: MatK a

Methods

leftUnitor :: forall (a0 :: MatK a). Ob a0 => ((Unit :: MatK a) ** a0) ~> a0 Source Comments #

leftUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> ((Unit :: MatK a) ** a0) Source Comments #

rightUnitor :: forall (a0 :: MatK a). Ob a0 => (a0 ** (Unit :: MatK a)) ~> a0 Source Comments #

rightUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> (a0 ** (Unit :: MatK a)) Source Comments #

associator :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => ((a0 ** b) ** c) ~> (a0 ** (b ** c)) Source Comments #

associatorInv :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => (a0 ** (b ** c)) ~> ((a0 ** b) ** c) Source Comments #

Monoidal (POCATK Constraint) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

type (a :: POCATK Constraint) ** (b :: POCATK Constraint) 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

type (a :: POCATK Constraint) ** (b :: POCATK Constraint) = a && b

Methods

leftUnitor :: forall (a :: POCATK Constraint). Ob a => ((Unit :: POCATK Constraint) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: POCATK Constraint). Ob a => a ~> ((Unit :: POCATK Constraint) ** a) Source Comments #

rightUnitor :: forall (a :: POCATK Constraint). Ob a => (a ** (Unit :: POCATK Constraint)) ~> a Source Comments #

rightUnitorInv :: forall (a :: POCATK Constraint). Ob a => a ~> (a ** (Unit :: POCATK Constraint)) Source Comments #

associator :: forall (a :: POCATK Constraint) (b :: POCATK Constraint) (c :: POCATK Constraint). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: POCATK Constraint) (b :: POCATK Constraint) (c :: POCATK Constraint). (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: REV k) (b :: REV k) (c :: REV k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: REV k) (b :: REV k) (c :: REV k). (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

BiCCC k => Monoidal (FK k) Source Comments # 
Instance details

Defined in Proarrow.Helper.CCC

Associated Types

type Unit 
Instance details

Defined in Proarrow.Helper.CCC

type Unit = TerminalObject :: FK k

Methods

leftUnitor :: forall (a :: FK k). Ob a => ((Unit :: FK k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: FK k). Ob a => a ~> ((Unit :: FK k) ** a) Source Comments #

rightUnitor :: forall (a :: FK k). Ob a => (a ** (Unit :: FK k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: FK k). Ob a => a ~> (a ** (Unit :: FK k)) Source Comments #

associator :: forall (a :: FK k) (b :: FK k) (c :: FK k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: FK k) (b :: FK k) (c :: FK k). (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

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

Defined in Proarrow.Category.Monoidal.Strictified

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

type Unit = '[] :: [k]

Methods

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

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

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

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

associator :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(Promonad p, StrongProd p) => Monoidal (KLEISLI p) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Kleisli

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Kleisli

type Unit = 'KL (TerminalObject :: k) :: KLEISLI p

Methods

leftUnitor :: forall (a :: KLEISLI p). Ob a => ((Unit :: KLEISLI p) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: KLEISLI p). Ob a => a ~> ((Unit :: KLEISLI p) ** a) Source Comments #

rightUnitor :: forall (a :: KLEISLI p). Ob a => (a ** (Unit :: KLEISLI p)) ~> a Source Comments #

rightUnitorInv :: forall (a :: KLEISLI p). Ob a => a ~> (a ** (Unit :: KLEISLI p)) Source Comments #

associator :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) (c :: SUBCAT ob). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) (c :: SUBCAT ob). (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: PRO j k) (b :: PRO j k) (c :: PRO j k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: PRO j k) (b :: PRO j k) (c :: PRO j k). (Ob a, Ob b, Ob 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

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

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

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

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

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

associatorInv :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). (Ob a, Ob b, Ob 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

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

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

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

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

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

associatorInv :: forall (a :: Type -> Type) (b :: Type -> Type) (c :: Type -> Type). (Ob a, Ob b, Ob 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

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

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

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

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

associator :: forall (a :: ENDO kk k) (b :: ENDO kk k) (c :: ENDO kk k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: ENDO kk k) (b :: ENDO kk k) (c :: ENDO kk k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

leftUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> ((Unit :: k) ** a) ~> b Source Comments #

leftUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> ((Unit :: k) ** b) Source Comments #

rightUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> (a ** (Unit :: k)) ~> b Source Comments #

rightUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> (b ** (Unit :: k)) Source Comments #

associator' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal k => Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal 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) (a' :: k) (b :: k) (b' :: k). (a ~> a') -> (b ~> 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) (a' :: BOOL) (b :: BOOL) (b' :: BOOL). (a ~> a') -> (b ~> b') -> (a ** b) ~> (b' ** a') Source Comments #

SymMonoidal KIND Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

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

SymMonoidal CONSTRAINT Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Methods

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

SymMonoidal LINEAR Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

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

SymMonoidal () Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

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

SymMonoidal Type Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

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

Num a => SymMonoidal (MatK a) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

swap' :: forall (a0 :: MatK a) (a' :: MatK a) (b :: MatK a) (b' :: MatK a). (a0 ~> a') -> (b ~> b') -> (a0 ** 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) (a' :: REV k) (b :: REV k) (b' :: REV k). (a ~> a') -> (b ~> 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) (a' :: OPPOSITE k) (b :: OPPOSITE k) (b' :: OPPOSITE k). (a ~> a') -> (b ~> 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) (a' :: COPROD k) (b :: COPROD k) (b' :: COPROD k). (a ~> a') -> (b ~> 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) (a' :: PROD k) (b :: PROD k) (b' :: PROD k). (a ~> a') -> (b ~> 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) (a' :: SUBCAT ob) (b :: SUBCAT ob) (b' :: SUBCAT ob). (a ~> a') -> (b ~> 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) (a' :: PRO j k) (b :: PRO j k) (b' :: PRO j k). (a ~> a') -> (b ~> 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)) (a' :: (j, k)) (b :: (j, k)) (b' :: (j, k)). (a ~> a') -> (b ~> 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 #

class (SymMonoidal k, Profunctor p) => TracedMonoidalProfunctor (p :: k +-> k) where Source Comments #

Minimal complete definition

trace | trace'

Methods

trace :: forall (u :: k) (x :: k) (y :: k). (Ob x, Ob y, Ob u) => p (x ** u) (y ** u) -> p x y Source Comments #

trace' :: forall (x :: k) (x' :: k) (y :: k) (y' :: k) (u :: k) (u' :: k). (x ~> x') -> (y ~> y') -> (u ~> u') -> p (x' ** u') (y ** u) -> p x y' Source Comments #

Instances

Instances details
TracedMonoidalProfunctor Cat Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

trace :: forall (u :: KIND) (x :: KIND) (y :: KIND). (Ob x, Ob y, Ob u) => Cat (x ** u) (y ** u) -> Cat x y Source Comments #

trace' :: forall (x :: KIND) (x' :: KIND) (y :: KIND) (y' :: KIND) (u :: KIND) (u' :: KIND). (x ~> x') -> (y ~> y') -> (u ~> u') -> Cat (x' ** u') (y ** u) -> Cat x y' Source Comments #

TracedMonoidalProfunctor Unit Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

trace :: forall (u :: ()) (x :: ()) (y :: ()). (Ob x, Ob y, Ob u) => Unit (x ** u) (y ** u) -> Unit x y Source Comments #

trace' :: forall (x :: ()) (x' :: ()) (y :: ()) (y' :: ()) (u :: ()) (u' :: ()). (x ~> x') -> (y ~> y') -> (u ~> u') -> Unit (x' ** u') (y ** u) -> Unit x y' Source Comments #

TracedMonoidalProfunctor (->) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

trace :: forall u x y. (Ob x, Ob y, Ob u) => ((x ** u) -> (y ** u)) -> x -> y Source Comments #

trace' :: (x ~> x') -> (y ~> y') -> (u ~> u') -> ((x' ** u') -> (y ** u)) -> x -> y' Source Comments #

Num a => TracedMonoidalProfunctor (Mat :: MatK a -> MatK a -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

trace :: forall (u :: MatK a) (x :: MatK a) (y :: MatK a). (Ob x, Ob y, Ob u) => Mat (x ** u) (y ** u) -> Mat x y Source Comments #

trace' :: forall (x :: MatK a) (x' :: MatK a) (y :: MatK a) (y' :: MatK a) (u :: MatK a) (u' :: MatK a). (x ~> x') -> (y ~> y') -> (u ~> u') -> Mat (x' ** u') (y ** u) -> Mat x y' Source Comments #

class (TracedMonoidalProfunctor ((~>) :: CAT k), Monoidal k) => TracedMonoidal k Source Comments #

Instances

Instances details
(TracedMonoidalProfunctor ((~>) :: CAT k), Monoidal k) => TracedMonoidal k Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal

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 #

swapInner' :: forall k (a :: k) (a' :: k) (b :: k) (b' :: k) (c :: k) (c' :: k) (d :: k) (d' :: k). SymMonoidal k => (a ~> a') -> (b ~> b') -> (c ~> c') -> (d ~> d') -> ((a ** b) ** (c ** d)) ~> ((a' ** c') ** (b' ** d')) Source Comments #

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