Safe Haskell | None |
---|---|
Language | GHC2024 |
Proarrow.Category.Enriched
Synopsis
- class (Monoidal v, Profunctor p, Enriched v j, Enriched v k) => EnrichedProfunctor v (p :: j +-> k) where
- type ProObj v (p :: j +-> k) (a :: k) (b :: j) :: v
- withProObj :: forall (a :: k) (b :: j) r. (Ob a, Ob b) => (Ob (ProObj v p a b) => r) -> r
- underlying :: forall (a :: k) (b :: j). p a b -> (Unit :: v) ~> ProObj v p a b
- enriched :: forall (a :: k) (b :: j). (Ob a, Ob b) => ((Unit :: v) ~> ProObj v p a b) -> p a b
- 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
- 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
- class EnrichedProfunctor v ((~>) :: CAT k) => Enriched v k
- type HomObj v (a :: k) (b :: k) = ProObj v ((~>) :: CAT k) a b
- 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
- type HomSelf (a :: k) (b :: k) = a ~~> b
- underlyingSelf :: forall k (a :: k) (b :: k). Closed k => (a ~> b) -> (Unit :: k) ~> HomSelf a b
- enrichedSelf :: forall k (a :: k) (b :: k). (Closed k, Ob a, Ob b) => ((Unit :: k) ~> HomSelf a b) -> a ~> b
- 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
- type Clone k = SUBCAT (Any :: k -> Constraint)
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.
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
ThinProfunctor p => EnrichedProfunctor CONSTRAINT (p :: j +-> k) Source Comments # | |
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 # | |
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 # | |
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 # | |
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 # | |
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. |
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
EnrichedProfunctor v ((~>) :: CAT k) => Enriched v k Source Comments # | |
Defined in Proarrow.Category.Enriched |
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 #