proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Category.Limit

Synopsis

Documentation

class Representable (Limit j1 d) => IsRepresentableLimit (j1 :: i +-> j) (d :: i +-> k) Source Github #

Instances

Instances details
Representable (Limit j2 d) => IsRepresentableLimit (j2 :: i +-> j1) (d :: i +-> k) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

class (Profunctor j, forall (d :: i +-> k). Representable d => IsRepresentableLimit j d) => HasLimits (j :: i +-> a) k where Source Github #

profunctor-weighted limits

Associated Types

type Limit (j :: i +-> a) (d :: i +-> k) :: a +-> k Source Github #

Methods

limit :: forall (d :: i +-> k). Representable d => (Limit j d :.: j) :~> d Source Github #

limitUniv :: forall (d :: i +-> k) (p :: a +-> k). (Representable d, Profunctor p) => ((p :.: j) :~> d) -> p :~> Limit j d Source Github #

Instances

Instances details
CategoryOf j => HasLimits (Id :: j -> j -> Type) k Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: j +-> k). Representable d => (Limit (Id :: j -> j -> Type) d :.: (Id :: j -> j -> Type)) :~> d Source Github #

limitUniv :: forall (d :: j +-> k) (p :: j +-> k). (Representable d, Profunctor p) => ((p :.: (Id :: j -> j -> Type)) :~> d) -> p :~> Limit (Id :: j -> j -> Type) d Source Github #

HasTerminalObject k => HasLimits (Unweighted :: () -> VOID -> Type) k Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: VOID +-> k). Representable d => (Limit (Unweighted :: () -> VOID -> Type) d :.: (Unweighted :: () -> VOID -> Type)) :~> d Source Github #

limitUniv :: forall (d :: VOID +-> k) (p :: () +-> k). (Representable d, Profunctor p) => ((p :.: (Unweighted :: () -> VOID -> Type)) :~> d) -> p :~> Limit (Unweighted :: () -> VOID -> Type) d Source Github #

Powered Type k => HasLimits (HaskValue n :: () -> () -> Type) k Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: () +-> k). Representable d => (Limit (HaskValue n :: () -> () -> Type) d :.: (HaskValue n :: () -> () -> Type)) :~> d Source Github #

limitUniv :: forall (d :: () +-> k) (p :: () +-> k). (Representable d, Profunctor p) => ((p :.: (HaskValue n :: () -> () -> Type)) :~> d) -> p :~> Limit (HaskValue n :: () -> () -> Type) d Source Github #

FunctorForRep f => HasLimits (Corep f :: a -> i -> Type) k Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: i +-> k). Representable d => (Limit (Corep f) d :.: Corep f) :~> d Source Github #

limitUniv :: forall (d :: i +-> k) (p :: a +-> k). (Representable d, Profunctor p) => ((p :.: Corep f) :~> d) -> p :~> Limit (Corep f) d Source Github #

(Representable j1, HasLimits j1 k, HasLimits j2 k) => HasLimits (j1 :.: j2 :: a -> i -> Type) k Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: i +-> k). Representable d => (Limit (j1 :.: j2) d :.: (j1 :.: j2)) :~> d Source Github #

limitUniv :: forall (d :: i +-> k) (p :: a +-> k). (Representable d, Profunctor p) => ((p :.: (j1 :.: j2)) :~> d) -> p :~> Limit (j1 :.: j2) d Source Github #

CategoryOf k => HasLimits (Hom :: () -> (OPPOSITE k, k) -> Type) Type Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: (OPPOSITE k, k) +-> Type). Representable d => (Limit (Hom :: () -> (OPPOSITE k, k) -> Type) d :.: (Hom :: () -> (OPPOSITE k, k) -> Type)) :~> d Source Github #

limitUniv :: forall (d :: (OPPOSITE k, k) +-> Type) (p :: () +-> Type). (Representable d, Profunctor p) => ((p :.: (Hom :: () -> (OPPOSITE k, k) -> Type)) :~> d) -> p :~> Limit (Hom :: () -> (OPPOSITE k, k) -> Type) d Source Github #

HasBinaryProducts k => HasLimits (Unweighted :: () -> COPRODUCT () () -> Type) k Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: COPRODUCT () () +-> k). Representable d => (Limit (Unweighted :: () -> COPRODUCT () () -> Type) d :.: (Unweighted :: () -> COPRODUCT () () -> Type)) :~> d Source Github #

limitUniv :: forall (d :: COPRODUCT () () +-> k) (p :: () +-> k). (Representable d, Profunctor p) => ((p :.: (Unweighted :: () -> COPRODUCT () () -> Type)) :~> d) -> p :~> Limit (Unweighted :: () -> COPRODUCT () () -> Type) d Source Github #

mapLimit :: forall {a} {i} (j :: i +-> a) k (p :: i +-> k) (q :: i +-> k). (HasLimits j k, Representable p, Representable q) => (p ~> q) -> Limit j p ~> Limit j q Source Github #

data family TerminalLimit :: (VOID +-> k) -> () +-> k Source Github #

Instances

Instances details
HasTerminalObject k => FunctorForRep (TerminalLimit d :: () +-> k) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

fmap :: forall (a :: ()) (b :: ()). (a ~> b) -> (TerminalLimit d @ a) ~> (TerminalLimit d @ b) Source Github #

type (TerminalLimit d :: () +-> k) @ (a :: ()) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

type (TerminalLimit d :: () +-> k) @ (a :: ()) = TerminalObject :: k

data family ProductLimit :: (COPRODUCT () () +-> k) -> () +-> k Source Github #

Instances

Instances details
(HasBinaryProducts k, Representable d) => FunctorForRep (ProductLimit d :: () +-> k) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

fmap :: forall (a :: ()) (b :: ()). (a ~> b) -> (ProductLimit d @ a) ~> (ProductLimit d @ b) Source Github #

type (ProductLimit d :: () +-> k) @ '() Source Github # 
Instance details

Defined in Proarrow.Category.Limit

type (ProductLimit d :: () +-> k) @ '() = (d % ('L '() :: COPRODUCT () ())) && (d % ('R '() :: COPRODUCT () ()))

choose :: forall {k} (d :: COPRODUCT () () +-> k) (b :: COPRODUCT () ()). (HasBinaryProducts k, Representable d, Ob b) => ((d % ('L '() :: COPRODUCT () ())) && (d % ('R '() :: COPRODUCT () ()))) ~> (d % b) Source Github #

data family PowerLimit :: v -> (() +-> k) -> () +-> k Source Github #

Instances

Instances details
(Representable d, Powered v k, Ob n) => FunctorForRep (PowerLimit n d :: () +-> k) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

fmap :: forall (a :: ()) (b :: ()). (a ~> b) -> (PowerLimit n d @ a) ~> (PowerLimit n d @ b) Source Github #

type (PowerLimit n d :: () +-> k) @ '() Source Github # 
Instance details

Defined in Proarrow.Category.Limit

type (PowerLimit n d :: () +-> k) @ '() = (d % '()) ^ n

newtype End (d :: (OPPOSITE k, k) +-> Type) Source Github #

Constructors

End 

Fields

  • unEnd :: forall (a :: k) (b :: k). (a ~> b) -> d % '('OP a, b)
     

data family EndLimit :: ((OPPOSITE k, k) +-> Type) -> () +-> Type Source Github #

Instances

Instances details
Representable d => FunctorForRep (EndLimit d :: () +-> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

fmap :: forall (a :: ()) (b :: ()). (a ~> b) -> (EndLimit d @ a) ~> (EndLimit d @ b) Source Github #

type (EndLimit d :: () +-> Type) @ '() Source Github # 
Instance details

Defined in Proarrow.Category.Limit

type (EndLimit d :: () +-> Type) @ '() = End d

data Hom (a :: ()) (b :: (OPPOSITE k, k)) where Source Github #

Constructors

Hom :: forall {k} (a1 :: k) (b1 :: k). (a1 ~> b1) -> Hom '() '('OP a1, b1) 

Instances

Instances details
CategoryOf k => HasLimits (Hom :: () -> (OPPOSITE k, k) -> Type) Type Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: (OPPOSITE k, k) +-> Type). Representable d => (Limit (Hom :: () -> (OPPOSITE k, k) -> Type) d :.: (Hom :: () -> (OPPOSITE k, k) -> Type)) :~> d Source Github #

limitUniv :: forall (d :: (OPPOSITE k, k) +-> Type) (p :: () +-> Type). (Representable d, Profunctor p) => ((p :.: (Hom :: () -> (OPPOSITE k, k) -> Type)) :~> d) -> p :~> Limit (Hom :: () -> (OPPOSITE k, k) -> Type) d Source Github #

CategoryOf k => Profunctor (Hom :: () -> (OPPOSITE k, k) -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

Methods

dimap :: forall (c :: ()) (a :: ()) (b :: (OPPOSITE k, k)) (d :: (OPPOSITE k, k)). (c ~> a) -> (b ~> d) -> Hom a b -> Hom c d Source Github #

(\\) :: forall (a :: ()) (b :: (OPPOSITE k, k)) r. ((Ob a, Ob b) => r) -> Hom a b -> r Source Github #

type Limit (Hom :: () -> (OPPOSITE k, k) -> Type) (d :: (OPPOSITE k, k) +-> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Limit

type Limit (Hom :: () -> (OPPOSITE k, k) -> Type) (d :: (OPPOSITE k, k) +-> Type) = Rep (EndLimit d)