Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
newtype KLEISLI (p :: CAT k) Source Comments #
KL k |
Instances
data Kleisli (a :: KLEISLI p) (b :: KLEISLI p) where Source Comments #
Instances
(Strong w p, Strong ((~>) :: CAT k) p, Promonad p, Monoidal k) => Strong (w :: k +-> k) (Kleisli :: KLEISLI p -> KLEISLI p -> Type) Source Comments # | |
Promonad p => Promonad (Kleisli :: KLEISLI p -> KLEISLI p -> Type) 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. |
Promonad p => Profunctor (Kleisli :: KLEISLI p -> KLEISLI p -> Type) Source Comments # | |
Defined in Proarrow.Category.Instance.Kleisli |
arr :: forall {k} (p :: PRO k k) (a :: k) (b :: k). Promonad p => (a ~> b) -> Kleisli ('KL a :: KLEISLI p) ('KL b :: KLEISLI p) Source Comments #
data KleisliFree (p :: k +-> k) (a :: KLEISLI p) (b :: k) where Source Comments #
KleisliFree :: forall {k} (p :: k +-> k) (a1 :: k) (b :: k). p a1 b -> KleisliFree p ('KL a1 :: KLEISLI p) b |
Instances
Promonad p => Adjunction (KleisliFree p :: KLEISLI p -> k -> Type) (KleisliForget p :: k -> KLEISLI p -> Type) Source Comments # | |
Defined in Proarrow.Category.Instance.Kleisli unit :: forall (a :: k). Ob a => (KleisliForget p :.: KleisliFree p) a a Source Comments # counit :: (KleisliFree p :.: KleisliForget p) :~> ((~>) :: CAT (KLEISLI p)) Source Comments # | |
Promonad p => Profunctor (KleisliFree p :: KLEISLI p -> k -> Type) Source Comments # | |
Defined in Proarrow.Category.Instance.Kleisli |
data KleisliForget (p :: k +-> k) (a :: k) (b :: KLEISLI p) where Source Comments #
KleisliForget :: forall {k} (p :: k +-> k) (a :: k) (b1 :: k). p a b1 -> KleisliForget p a ('KL b1 :: KLEISLI p) |
Instances
Promonad p => Profunctor (KleisliForget p :: j -> KLEISLI p -> Type) Source Comments # | |
Defined in Proarrow.Category.Instance.Kleisli | |
Promonad p => Adjunction (KleisliFree p :: KLEISLI p -> k -> Type) (KleisliForget p :: k -> KLEISLI p -> Type) Source Comments # | |
Defined in Proarrow.Category.Instance.Kleisli unit :: forall (a :: k). Ob a => (KleisliForget p :.: KleisliFree p) a a Source Comments # counit :: (KleisliFree p :.: KleisliForget p) :~> ((~>) :: CAT (KLEISLI p)) Source Comments # |
type DUAL (a :: KLEISLI p) = 'KL ('OP (UN ('KL :: k -> KLEISLI p) a)) :: KLEISLI (Op p) Source Comments #
type UNDUAL (a :: KLEISLI (Op p)) = 'KL (UN ('OP :: k -> OPPOSITE k) (UN ('KL :: OPPOSITE k -> KLEISLI (Op p)) a)) :: KLEISLI p Source Comments #
dual :: forall {k} {p :: CAT k} (a :: KLEISLI p) (b :: KLEISLI p). (a ~> b) -> DUAL b ~> DUAL a Source Comments #
dist :: forall {k} {p :: PRO k k} (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (BiCCC k, Promonad p, Ob a, Ob b, Ob c) => (a ** (b ++ c)) ~> ((a ** b) ++ (a ** c)) Source Comments #
copy :: forall k (p :: PRO k k) (a :: KLEISLI p). (HasBinaryProducts k, Promonad p, Ob a) => a ~> (a ** a) Source Comments #
discard :: forall k (p :: PRO k k) (a :: KLEISLI p). (HasTerminalObject k, Promonad p, Ob a) => a ~> (Unit :: KLEISLI p) Source Comments #