proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Category.Enriched

Synopsis

Documentation

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

Working with enriched categories and profunctors in Haskell is hard. Instead we encode them using the underlying regular category/profunctor, and show that the enriched structure can be recovered.

Associated Types

type ProObj v (p :: j +-> k) (a :: k) (b :: j) :: v Source Comments #

Methods

withProObj :: forall (a :: k) (b :: j) r. (Ob a, Ob b) => (Ob (ProObj v p a b) => r) -> r Source Comments #

underlying :: forall (a :: k) (b :: j). p a b -> (Unit :: v) ~> ProObj v p a b Source Comments #

enriched :: forall (a :: k) (b :: j). (Ob a, Ob b) => ((Unit :: v) ~> ProObj v p a b) -> p a b Source Comments #

rmap :: forall (a :: k) (b :: j) (c :: j). (Ob a, Ob b, Ob c) => (HomObj v b c ** ProObj v p a b) ~> ProObj v p a c Source Comments #

lmap :: forall (a :: k) (b :: j) (c :: k). (Ob a, Ob b, Ob c) => (HomObj v c a ** ProObj v p a b) ~> ProObj v p c b Source Comments #

Instances

Instances details
ThinProfunctor p => EnrichedProfunctor CONSTRAINT (p :: j +-> k) Source Comments # 
Instance details

Defined in Proarrow.Category.Enriched

Methods

withProObj :: forall (a :: k) (b :: j) r. (Ob a, Ob b) => (Ob (ProObj CONSTRAINT p a b) => r) -> r Source Comments #

underlying :: forall (a :: k) (b :: j). p a b -> (Unit :: CONSTRAINT) ~> ProObj CONSTRAINT p a b Source Comments #

enriched :: forall (a :: k) (b :: j). (Ob a, Ob b) => ((Unit :: CONSTRAINT) ~> ProObj CONSTRAINT p a b) -> p a b Source Comments #

rmap :: forall (a :: k) (b :: j) (c :: j). (Ob a, Ob b, Ob c) => (HomObj CONSTRAINT b c ** ProObj CONSTRAINT p a b) ~> ProObj CONSTRAINT p a c Source Comments #

lmap :: forall (a :: k) (b :: j) (c :: k). (Ob a, Ob b, Ob c) => (HomObj CONSTRAINT c a ** ProObj CONSTRAINT p a b) ~> ProObj CONSTRAINT p c b Source Comments #

CodiscreteProfunctor p => EnrichedProfunctor () (p :: j +-> k) Source Comments # 
Instance details

Defined in Proarrow.Category.Enriched

Methods

withProObj :: forall (a :: k) (b :: j) r. (Ob a, Ob b) => (Ob (ProObj () p a b) => r) -> r Source Comments #

underlying :: forall (a :: k) (b :: j). p a b -> (Unit :: ()) ~> ProObj () p a b Source Comments #

enriched :: forall (a :: k) (b :: j). (Ob a, Ob b) => ((Unit :: ()) ~> ProObj () p a b) -> p a b Source Comments #

rmap :: forall (a :: k) (b :: j) (c :: j). (Ob a, Ob b, Ob c) => (HomObj () b c ** ProObj () p a b) ~> ProObj () p a c Source Comments #

lmap :: forall (a :: k) (b :: j) (c :: k). (Ob a, Ob b, Ob c) => (HomObj () c a ** ProObj () p a b) ~> ProObj () p c b Source Comments #

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

Defined in Proarrow.Category.Enriched

Methods

withProObj :: forall (a :: k) (b :: j) r. (Ob a, Ob b) => (Ob (ProObj Type p a b) => r) -> r Source Comments #

underlying :: forall (a :: k) (b :: j). p a b -> (Unit :: Type) ~> ProObj Type p a b Source Comments #

enriched :: forall (a :: k) (b :: j). (Ob a, Ob b) => ((Unit :: Type) ~> ProObj Type p a b) -> p a b Source Comments #

rmap :: forall (a :: k) (b :: j) (c :: j). (Ob a, Ob b, Ob c) => (HomObj Type b c ** ProObj Type p a b) ~> ProObj Type p a c Source Comments #

lmap :: forall (a :: k) (b :: j) (c :: k). (Ob a, Ob b, Ob c) => (HomObj Type c a ** ProObj Type p a b) ~> ProObj Type p c b Source Comments #

DaggerProfunctor p => EnrichedProfunctor (Type, Type) (p :: j +-> j) Source Comments # 
Instance details

Defined in Proarrow.Category.Enriched

Methods

withProObj :: forall (a :: j) (b :: j) r. (Ob a, Ob b) => (Ob (ProObj (Type, Type) p a b) => r) -> r Source Comments #

underlying :: forall (a :: j) (b :: j). p a b -> (Unit :: (Type, Type)) ~> ProObj (Type, Type) p a b Source Comments #

enriched :: forall (a :: j) (b :: j). (Ob a, Ob b) => ((Unit :: (Type, Type)) ~> ProObj (Type, Type) p a b) -> p a b Source Comments #

rmap :: forall (a :: j) (b :: j) (c :: j). (Ob a, Ob b, Ob c) => (HomObj (Type, Type) b c ** ProObj (Type, Type) p a b) ~> ProObj (Type, Type) p a c Source Comments #

lmap :: forall (a :: j) (b :: j) (c :: j). (Ob a, Ob b, Ob c) => (HomObj (Type, Type) c a ** ProObj (Type, Type) p a b) ~> ProObj (Type, Type) p c b Source Comments #

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

Defined in Proarrow.Category.Enriched

Methods

withProObj :: forall (a :: OPPOSITE j) (b :: OPPOSITE k) r. (Ob a, Ob b) => (Ob (ProObj (Clone v) (Op p) a b) => r) -> r Source Comments #

underlying :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). Op p a b -> (Unit :: Clone v) ~> ProObj (Clone v) (Op p) a b Source Comments #

enriched :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). (Ob a, Ob b) => ((Unit :: Clone v) ~> ProObj (Clone v) (Op p) a b) -> Op p a b Source Comments #

rmap :: forall (a :: OPPOSITE j) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => (HomObj (Clone v) b c ** ProObj (Clone v) (Op p) a b) ~> ProObj (Clone v) (Op p) a c Source Comments #

lmap :: forall (a :: OPPOSITE j) (b :: OPPOSITE k) (c :: OPPOSITE j). (Ob a, Ob b, Ob c) => (HomObj (Clone v) c a ** ProObj (Clone v) (Op p) a b) ~> ProObj (Clone v) (Op p) c b Source Comments #

Monoid m => EnrichedProfunctor (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) Source Comments #

A monoid is a one object enriched category.

Instance details

Defined in Proarrow.Category.Enriched

Methods

withProObj :: forall (a :: MONOIDK m) (b :: MONOIDK m) r. (Ob a, Ob b) => (Ob (ProObj (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) a b) => r) -> r Source Comments #

underlying :: forall (a :: MONOIDK m) (b :: MONOIDK m). Mon a b -> (Unit :: Clone k) ~> ProObj (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) a b Source Comments #

enriched :: forall (a :: MONOIDK m) (b :: MONOIDK m). (Ob a, Ob b) => ((Unit :: Clone k) ~> ProObj (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) a b) -> Mon a b Source Comments #

rmap :: forall (a :: MONOIDK m) (b :: MONOIDK m) (c :: MONOIDK m). (Ob a, Ob b, Ob c) => (HomObj (Clone k) b c ** ProObj (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) a b) ~> ProObj (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) a c Source Comments #

lmap :: forall (a :: MONOIDK m) (b :: MONOIDK m) (c :: MONOIDK m). (Ob a, Ob b, Ob c) => (HomObj (Clone k) c a ** ProObj (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) a b) ~> ProObj (Clone k) (Mon :: MONOIDK m -> MONOIDK m -> Type) c b Source Comments #

class EnrichedProfunctor v ((~>) :: CAT k) => Enriched v k Source Comments #

Instances

Instances details
EnrichedProfunctor v ((~>) :: CAT k) => Enriched v k Source Comments # 
Instance details

Defined in Proarrow.Category.Enriched

type HomObj v (a :: k) (b :: k) = ProObj v ((~>) :: CAT k) a b Source Comments #

comp :: forall {k} v (a :: k) (b :: k) (c :: k). (Enriched v k, Ob a, Ob b, Ob c) => (HomObj v b c ** HomObj v a b) ~> HomObj v a c Source Comments #

type HomSelf (a :: k) (b :: k) = a ~~> b Source Comments #

Closed monoidal categories are enriched in themselves.

underlyingSelf :: forall k (a :: k) (b :: k). Closed k => (a ~> b) -> (Unit :: k) ~> HomSelf a b Source Comments #

enrichedSelf :: forall k (a :: k) (b :: k). (Closed k, Ob a, Ob b) => ((Unit :: k) ~> HomSelf a b) -> a ~> b Source Comments #

compSelf :: forall {k} (a :: k) (b :: k) (c :: k). (Closed k, Ob a, Ob b, Ob c) => (HomSelf b c ** HomSelf a b) ~> HomSelf a c Source Comments #