proarrow-0: Category theory with a central role for profunctors
Safe HaskellNone
LanguageHaskell2010

Proarrow.Object.Exponential

Documentation

class Monoidal k => Closed k where Source Comments #

Associated Types

type (a :: k) ~~> (b :: k) :: k infixr 2 Source Comments #

Methods

curry' :: forall (a :: k) (b :: k) (c :: k). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: k) (c :: k) (a :: k). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: k) (y :: k) (x :: k) (a :: k). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

Instances

Instances details
Closed BOOL Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Associated Types

type 'TRU ~~> 'TRU 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'TRU ~~> 'TRU = 'TRU
type 'TRU ~~> 'FLS 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'TRU ~~> 'FLS = 'FLS
type 'FLS ~~> 'TRU 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'FLS ~~> 'TRU = 'TRU
type 'FLS ~~> 'FLS 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'FLS ~~> 'FLS = 'TRU

Methods

curry' :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: BOOL) (c :: BOOL) (a :: BOOL). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: BOOL) (y :: BOOL) (x :: BOOL) (a :: BOOL). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

Closed CONSTRAINT Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Associated Types

type ('CNSTRNT a :: CONSTRAINT) ~~> ('CNSTRNT b :: CONSTRAINT) 
Instance details

Defined in Proarrow.Category.Instance.Constraint

type ('CNSTRNT a :: CONSTRAINT) ~~> ('CNSTRNT b :: CONSTRAINT) = 'CNSTRNT (a :=> b)

Methods

curry' :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (c :: CONSTRAINT). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: CONSTRAINT) (c :: CONSTRAINT) (a :: CONSTRAINT). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: CONSTRAINT) (y :: CONSTRAINT) (x :: CONSTRAINT) (a :: CONSTRAINT). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

Closed LINEAR Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Associated Types

type (a :: LINEAR) ~~> (b :: LINEAR) 
Instance details

Defined in Proarrow.Category.Instance.Linear

type (a :: LINEAR) ~~> (b :: LINEAR) = 'L (UN 'L a %1 -> UN 'L b)

Methods

curry' :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: LINEAR) (c :: LINEAR) (a :: LINEAR). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: LINEAR) (y :: LINEAR) (x :: LINEAR) (a :: LINEAR). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

Closed UNIT Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Associated Types

type 'U ~~> 'U 
Instance details

Defined in Proarrow.Object.Exponential

type 'U ~~> 'U = 'U

Methods

curry' :: forall (a :: UNIT) (b :: UNIT) (c :: UNIT). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: UNIT) (c :: UNIT) (a :: UNIT). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: UNIT) (y :: UNIT) (x :: UNIT) (a :: UNIT). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

Closed Type Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Associated Types

type (a :: Type) ~~> (b :: Type) 
Instance details

Defined in Proarrow.Object.Exponential

type (a :: Type) ~~> (b :: Type) = a -> b

Methods

curry' :: Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

(CategoryOf j, CategoryOf k) => Closed (PROD (PRO j k)) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Methods

curry' :: forall (a :: PROD (PRO j k)) (b :: PROD (PRO j k)) (c :: PROD (PRO j k)). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: PROD (PRO j k)) (c :: PROD (PRO j k)) (a :: PROD (PRO j k)). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: PROD (PRO j k)) (y :: PROD (PRO j k)) (x :: PROD (PRO j k)) (a :: PROD (PRO j k)). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

(Monoidal j, Monoidal k) => Closed (PRO j k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Day

Methods

curry' :: forall (a :: PRO j k) (b :: PRO j k) (c :: PRO j k). Obj a -> Obj b -> ((a ** b) ~> c) -> a ~> (b ~~> c) Source Comments #

uncurry' :: forall (b :: PRO j k) (c :: PRO j k) (a :: PRO j k). Obj b -> Obj c -> (a ~> (b ~~> c)) -> (a ** b) ~> c Source Comments #

(^^^) :: forall (b :: PRO j k) (y :: PRO j k) (x :: PRO j k) (a :: PRO j k). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Comments #

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

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

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

mkExponential :: forall {k} (a :: k) (b :: k). Closed k => (a ~> b) -> (Unit :: k) ~> (a ~~> b) Source Comments #

eval' :: forall k (a :: k) (b :: k). Closed k => Obj a -> Obj b -> ((a ~~> b) ** a) ~> b Source Comments #

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

data ExponentialFunctor (a :: k) (b :: (OPPOSITE k, k)) where Source Comments #

Constructors

ExponentialFunctor :: forall {k} (c :: k) (d :: k) (a :: k). (Ob c, Ob d) => (a ~> (c ~~> d)) -> ExponentialFunctor a '('OP c, d) 

Instances

Instances details
Closed k => Profunctor (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Methods

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

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

Closed k => Representable (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Methods

index :: forall (a :: k) (b :: (OPPOSITE k, k)). ExponentialFunctor a b -> a ~> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % b) Source Comments #

tabulate :: forall (b :: (OPPOSITE k, k)) (a :: k). Ob b => (a ~> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % b)) -> ExponentialFunctor a b Source Comments #

repMap :: forall (a :: (OPPOSITE k, k)) (b :: (OPPOSITE k, k)). (a ~> b) -> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % a) ~> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % b) Source Comments #

type (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % ('('OP a, b) :: (OPPOSITE k, k)) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

type (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % ('('OP a, b) :: (OPPOSITE k, k)) = a ~~> b

ap :: forall {j} {k} (y :: k) (a :: j) (x :: k) p. (Cartesian j, Closed k, MonoidalProfunctor p, Ob y) => p a (x ~~> y) -> p a x -> p a y Source Comments #