| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Profunctor.Instance.Adj
Description
The Adj newtype marks a profunctor as the heteromorphism profunctor of an adjunction: because left
adjoints preserve colimits and right adjoints preserve limits, Adj p is a distributive monoidal
profunctor. Also proves that every adjunction between Hask endofunctors is equivalent to the
curry/uncurry adjunction (haskAdjIsCurryAdj).
Synopsis
- newtype Adj (p :: k -> k1 -> Type) (a :: k) (b :: k1) = Adj (p a b)
- haskAdjIsCurryAdj :: Adjunction p => PIso ((p %% ()) -> a -> b) ((p %% ()) -> a' -> b') (p a b) (p a' b')
Documentation
newtype Adj (p :: k -> k1 -> Type) (a :: k) (b :: k1) Source Github #
Preservation of limits and colimits makes the adjunction heteromorphism a distributive profunctor.
Constructors
| Adj (p a b) |
Instances
| (Cartesian j, Cartesian k, Corepresentable p) => MonoidalProfunctor (Adj p :: k -> j -> Type) Source Github # | |
| Profunctor p => Profunctor (Adj p :: k -> j -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Adj Methods dimap :: forall (c :: k) (a :: k) (b :: j) (d :: j). (c ~> a) -> (b ~> d) -> Adj p a b -> Adj p c d Source Github # lmap :: forall (c :: k) (a :: k) (b :: j). (c ~> a) -> Adj p a b -> Adj p c b Source Github # rmap :: forall (b :: j) (d :: j) (a :: k). (b ~> d) -> Adj p a b -> Adj p a d Source Github # (\\) :: forall (a :: k) (b :: j) r. ((Ob a, Ob b) => r) -> Adj p a b -> r Source Github # | |
| Corepresentable p => Corepresentable (Adj p :: k -> j -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Adj Methods coindex :: forall (a :: k) (b :: j). Adj p a b -> (Adj p %% a) ~> b Source Github # cotabulate :: forall (a :: k) (b :: j). Ob a => ((Adj p %% a) ~> b) -> Adj p a b Source Github # corepMap :: forall (a :: k) (b :: k). (a ~> b) -> (Adj p %% a) ~> (Adj p %% b) Source Github # corepUniv :: forall (a :: k). Ob a => Adj p a (Adj p %% a) Source Github # | |
| Representable p => Representable (Adj p :: k -> j -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Adj Methods index :: forall (a :: k) (b :: j). Adj p a b -> a ~> (Adj p % b) Source Github # tabulate :: forall (b :: j) (a :: k). Ob b => (a ~> (Adj p % b)) -> Adj p a b Source Github # repMap :: forall (a :: j) (b :: j). (a ~> b) -> (Adj p % a) ~> (Adj p % b) Source Github # repUniv :: forall (a :: j). Ob a => Adj p (Adj p % a) a Source Github # | |
| Adjunction p => Promonad (Adj p :: Type -> Type -> Type) Source Github # | |
| (HasCoproducts j, HasCoproducts k, Representable p) => MonoidalProfunctor (Coprod (Adj p) :: COPROD k -> COPROD j -> Type) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Adj | |
| type (Adj p :: k -> j -> Type) %% (a :: k) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Adj | |
| type (Adj p :: k -> j -> Type) % (a :: j) Source Github # | |
Defined in Proarrow.Profunctor.Instance.Adj | |
haskAdjIsCurryAdj :: Adjunction p => PIso ((p %% ()) -> a -> b) ((p %% ()) -> a' -> b') (p a b) (p a' b') Source Github #
Every adjunction between Hask endofunctors is equivalent to the curry-uncurry adjunction.