proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Category.Monoidal.Rev

Description

The reversed monoidal category: REV wraps a kind so that R a ** R b = R (b ** a), swapping the tensor's arguments while keeping the same objects and morphisms.

Synopsis
  • data REV k = R k
  • data Rev (p :: j +-> k) (a :: REV k) (b :: REV j) where
    • Rev :: forall {j} {k} (p :: j +-> k) (a1 :: k) (b1 :: j). p a1 b1 -> Rev p ('R a1) ('R b1)

Documentation

data REV k Source Github #

Constructors

R k 

Instances

Instances details
Monoidal k => Monoidal (REV k) Source Github #

The flipped tensor.

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

withOb2 :: forall (a :: REV k) (b :: REV k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github #

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

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

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

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

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

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

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

Defined in Proarrow.Category.Monoidal.Rev

Methods

swap :: forall (a :: REV k) (b :: REV k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Github #

CopyDiscard k => CopyDiscard (REV k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

copy :: forall (a :: REV k). Ob a => a ~> (a ** a) Source Github #

discard :: forall (a :: REV k). Ob a => a ~> (Unit :: REV k) Source Github #

CategoryOf k => CategoryOf (REV k) Source Github #

The reverse of the category of k, i.e. with the tensor flipped.

Instance details

Defined in Proarrow.Category.Monoidal.Rev

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

type (~>) = Rev ((~>) :: CAT k)
MonoidalProfunctor p => MonoidalProfunctor (Rev p :: REV k -> REV j -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

one :: Rev p (Unit :: REV k) (Unit :: REV j) Source Github #

(**) :: 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 Github #

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

Defined in Proarrow.Category.Monoidal.Rev

Methods

dimap :: forall (c :: REV k) (a :: REV k) (b :: REV j) (d :: REV j). (c ~> a) -> (b ~> d) -> Rev p a b -> Rev p c d Source Github #

lmap :: forall (c :: REV k) (a :: REV k) (b :: REV j). (c ~> a) -> Rev p a b -> Rev p c b Source Github #

rmap :: forall (b :: REV j) (d :: REV j) (a :: REV k). (b ~> d) -> Rev p a b -> Rev p a d Source Github #

(\\) :: forall (a :: REV k) (b :: REV j) r. ((Ob a, Ob b) => r) -> Rev p a b -> r Source Github #

CocommutativeComonoid a => CocommutativeComonoid ('R a :: REV k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Comonoid a => Comonoid ('R a :: REV k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

counit :: 'R a ~> (Unit :: REV k) Source Github #

comult :: 'R a ~> ('R a ** 'R a) Source Github #

Monoid a => Monoid ('R a :: REV k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

mempty :: (Unit :: REV k) ~> 'R a Source Github #

mappend :: ('R a ** 'R a) ~> 'R a Source Github #

(CategoryOf h, CategoryOf x) => MonoidalAction (Rep Precomp :: (x +-> h) -> (REV (ENDO x), x +-> h) -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.EndoProf

Methods

unitor :: forall (x0 :: x +-> h). Ob x0 => Act (Rep Precomp) (Unit :: REV (ENDO x)) x0 ~> x0 Source Github #

unitorInv :: forall (x0 :: x +-> h). Ob x0 => x0 ~> Act (Rep Precomp) (Unit :: REV (ENDO x)) x0 Source Github #

multiplicator :: forall (a :: REV (ENDO x)) (b :: REV (ENDO x)) (x0 :: x +-> h). (Ob a, Ob b, Ob x0) => Act (Rep Precomp) (a ** b) x0 ~> Act (Rep Precomp) a (Act (Rep Precomp) b x0) Source Github #

multiplicatorInv :: forall (a :: REV (ENDO x)) (b :: REV (ENDO x)) (x0 :: x +-> h). (Ob a, Ob b, Ob x0) => Act (Rep Precomp) a (Act (Rep Precomp) b x0) ~> Act (Rep Precomp) (a ** b) x0 Source Github #

Promonad p => Promonad (Rev p :: REV j -> REV j -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

id :: forall (a :: REV j). Ob a => Rev p a a Source Github #

(.) :: forall (b :: REV j) (c :: REV j) (a :: REV j). Rev p b c -> Rev p a b -> Rev p a c Source Github #

(CategoryOf h, CategoryOf x) => FunctorForRep (Precomp :: (REV (ENDO x), x +-> h) +-> (x +-> h)) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.EndoProf

Methods

fmap :: forall (a :: (REV (ENDO x), x +-> h)) (b :: (REV (ENDO x), x +-> h)). (a ~> b) -> (Precomp @ a) ~> (Precomp @ b) Source Github #

type Unit Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

type Unit = 'R (Unit :: k)
type (~>) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

type (~>) = Rev ((~>) :: CAT k)
type Ob (a :: REV k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

type Ob (a :: REV k) = WrappedOb ('R :: k -> REV k) a
type ('R a :: REV k) ** ('R b :: REV k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

type ('R a :: REV k) ** ('R b :: REV k) = 'R (b ** a)
type (Precomp :: (REV (ENDO x), x +-> h) +-> (x +-> h)) @ ('('R ('E g), q) :: (REV (ENDO x), x +-> h)) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.EndoProf

type (Precomp :: (REV (ENDO x), x +-> h) +-> (x +-> h)) @ ('('R ('E g), q) :: (REV (ENDO x), x +-> h)) = q :.: g

data Rev (p :: j +-> k) (a :: REV k) (b :: REV j) where Source Github #

Wraps a profunctor between the REV-wrapped kinds: the same values, but the monoidal structure on REV tensors in reverse order.

Constructors

Rev :: forall {j} {k} (p :: j +-> k) (a1 :: k) (b1 :: j). p a1 b1 -> Rev p ('R a1) ('R b1) 

Instances

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

Defined in Proarrow.Category.Monoidal.Rev

Methods

one :: Rev p (Unit :: REV k) (Unit :: REV j) Source Github #

(**) :: 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 Github #

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

Defined in Proarrow.Category.Monoidal.Rev

Methods

dimap :: forall (c :: REV k) (a :: REV k) (b :: REV j) (d :: REV j). (c ~> a) -> (b ~> d) -> Rev p a b -> Rev p c d Source Github #

lmap :: forall (c :: REV k) (a :: REV k) (b :: REV j). (c ~> a) -> Rev p a b -> Rev p c b Source Github #

rmap :: forall (b :: REV j) (d :: REV j) (a :: REV k). (b ~> d) -> Rev p a b -> Rev p a d Source Github #

(\\) :: forall (a :: REV k) (b :: REV j) r. ((Ob a, Ob b) => r) -> Rev p a b -> r Source Github #

Promonad p => Promonad (Rev p :: REV j -> REV j -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

id :: forall (a :: REV j). Ob a => Rev p a a Source Github #

(.) :: forall (b :: REV j) (c :: REV j) (a :: REV j). Rev p b c -> Rev p a b -> Rev p a c Source Github #