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

Proarrow.Category.Opposite

Documentation

newtype OPPOSITE k Source Comments #

Constructors

OP k 

Instances

Instances details
CategoryOf k => Profunctor (DoubleNeg :: k -> DUAL (DUAL k) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

dimap :: forall (c :: k) (a :: k) (b :: DUAL (DUAL k)) (d :: DUAL (DUAL k)). (c ~> a) -> (b ~> d) -> DoubleNeg a b -> DoubleNeg c d Source Comments #

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

CategoryOf k => Profunctor (Hom :: () -> (OPPOSITE k, k) -> Type) Source Comments # 
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 Comments #

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

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 #

CategoryOf k => HasLimits (Hom :: () -> (OPPOSITE k, k) -> Type) Type Source Comments # 
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 Comments #

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

Monoidal k => Monoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Opposite

type Unit = 'OP (Unit :: k)

Methods

leftUnitor :: forall (a :: OPPOSITE k). Ob a => ((Unit :: OPPOSITE k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: OPPOSITE k). Ob a => a ~> ((Unit :: OPPOSITE k) ** a) Source Comments #

rightUnitor :: forall (a :: OPPOSITE k). Ob a => (a ** (Unit :: OPPOSITE k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: OPPOSITE k). Ob a => a ~> (a ** (Unit :: OPPOSITE k)) Source Comments #

associator :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

SymMonoidal k => SymMonoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

swap' :: forall (a :: OPPOSITE k) (a' :: OPPOSITE k) (b :: OPPOSITE k) (b' :: OPPOSITE k). (a ~> a') -> (b ~> b') -> (a ** b) ~> (b' ** a') Source Comments #

CategoryOf k => CategoryOf (OPPOSITE k) Source Comments #

The opposite category of the category of k.

Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Opposite

type (~>) = Op ((~>) :: CAT k)
HasBinaryProducts k => HasBinaryCoproducts (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

lft :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: OPPOSITE k) (a' :: OPPOSITE k) (b :: OPPOSITE k). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (b' :: OPPOSITE k). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: OPPOSITE k) (a :: OPPOSITE k) (y :: OPPOSITE k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

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

HasBinaryCoproducts k => HasBinaryProducts (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

fst :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => (a && b) ~> a Source Comments #

fst' :: forall (a :: OPPOSITE k) (a' :: OPPOSITE k) (b :: OPPOSITE k). (a ~> a') -> Obj b -> (a && b) ~> a' Source Comments #

snd :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => (a && b) ~> b Source Comments #

snd' :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (b' :: OPPOSITE k). Obj a -> (b ~> b') -> (a && b) ~> b' Source Comments #

(&&&) :: forall (a :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Comments #

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

HasTerminalObject k => HasInitialObject (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type InitialObject 
Instance details

Defined in Proarrow.Category.Opposite

Methods

initiate :: forall (a :: OPPOSITE k). Ob a => (InitialObject :: OPPOSITE k) ~> a Source Comments #

initiate' :: forall (a' :: OPPOSITE k) (a :: OPPOSITE k). (a' ~> a) -> (InitialObject :: OPPOSITE k) ~> a Source Comments #

HasInitialObject k => HasTerminalObject (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type TerminalObject 
Instance details

Defined in Proarrow.Category.Opposite

Methods

terminate :: forall (a :: OPPOSITE k). Ob a => a ~> (TerminalObject :: OPPOSITE k) Source Comments #

terminate' :: forall (a :: OPPOSITE k) (a' :: OPPOSITE k). (a ~> a') -> a ~> (TerminalObject :: OPPOSITE k) Source Comments #

Profunctor p => Functor (Op p a :: OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

map :: forall (a0 :: OPPOSITE k) (b :: OPPOSITE k). (a0 ~> b) -> Op p a a0 ~> Op p a b Source Comments #

MonoidalProfunctor p => MonoidalProfunctor (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

par0 :: Op p (Unit :: OPPOSITE j) (Unit :: OPPOSITE k) Source Comments #

par :: forall (x1 :: OPPOSITE j) (x2 :: OPPOSITE k) (y1 :: OPPOSITE j) (y2 :: OPPOSITE k). Op p x1 x2 -> Op p y1 y2 -> Op p (x1 ** y1) (x2 ** y2) Source Comments #

Profunctor p => Profunctor (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

dimap :: forall (c :: OPPOSITE j) (a :: OPPOSITE j) (b :: OPPOSITE k) (d :: OPPOSITE k). (c ~> a) -> (b ~> d) -> Op p a b -> Op p c d Source Comments #

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

Representable p => Corepresentable (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

coindex :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). Op p a b -> (Op p %% a) ~> b Source Comments #

cotabulate :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). Ob a => ((Op p %% a) ~> b) -> Op p a b Source Comments #

corepMap :: forall (a :: OPPOSITE j) (b :: OPPOSITE j). (a ~> b) -> (Op p %% a) ~> (Op p %% b) Source Comments #

Corepresentable p => Representable (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

index :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). Op p a b -> a ~> (Op p % b) Source Comments #

tabulate :: forall (b :: OPPOSITE k) (a :: OPPOSITE j). Ob b => (a ~> (Op p % b)) -> Op p a b Source Comments #

repMap :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (a ~> b) -> (Op p % a) ~> (Op p % b) Source Comments #

Adjunction q p => Adjunction (Op p :: OPPOSITE k -> OPPOSITE j -> Type) (Op q :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Adjunction

Methods

unit :: forall (a :: OPPOSITE j). Ob a => (Op q :.: Op p) a a Source Comments #

counit :: (Op p :.: Op q) :~> ((~>) :: CAT (OPPOSITE k)) Source Comments #

Monoid c => Comonoid ('OP c :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

counit :: 'OP c ~> (Unit :: OPPOSITE k) Source Comments #

comult :: 'OP c ~> ('OP c ** 'OP c) Source Comments #

Comonoid c => Monoid ('OP c :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

mempty :: (Unit :: OPPOSITE k) ~> 'OP c Source Comments #

mappend :: ('OP c ** 'OP c) ~> 'OP c Source Comments #

Functor (Ran :: OPPOSITE (i +-> j) -> (i +-> k) -> k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Ran

Methods

map :: forall (a :: OPPOSITE (i +-> j)) (b :: OPPOSITE (i +-> j)). (a ~> b) -> (Ran a :: (i +-> k) -> k -> j -> Type) ~> (Ran b :: (i +-> k) -> k -> j -> Type) Source Comments #

Functor (Rift :: OPPOSITE (k +-> i) -> (j +-> i) -> k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

map :: forall (a :: OPPOSITE (k +-> i)) (b :: OPPOSITE (k +-> i)). (a ~> b) -> (Rift a :: (j +-> i) -> k -> j -> Type) ~> (Rift b :: (j +-> i) -> k -> j -> Type) Source Comments #

Promonad c => Promonad (Op c :: OPPOSITE j -> OPPOSITE j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

id :: forall (a :: OPPOSITE j). Ob a => Op c a a Source Comments #

(.) :: forall (b :: OPPOSITE j) (c0 :: OPPOSITE j) (a :: OPPOSITE j). Op c b c0 -> Op c a b -> Op c a c0 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 #

(Profunctor p, CategoryOf i, CategoryOf j) => Profunctor (Curry p :: (k, OPPOSITE j) -> i -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

dimap :: forall (c :: (k, OPPOSITE j)) (a :: (k, OPPOSITE j)) (b :: i) (d :: i). (c ~> a) -> (b ~> d) -> Curry p a b -> Curry p c d Source Comments #

(\\) :: forall (a :: (k, OPPOSITE j)) (b :: i) r. ((Ob a, Ob b) => r) -> Curry p a b -> r Source Comments #

(Profunctor p, Profunctor q) => Profunctor (DistribDual p q :: (DUAL j, DUAL k) -> DUAL (j', k') -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

dimap :: forall (c :: (DUAL j, DUAL k)) (a :: (DUAL j, DUAL k)) (b :: DUAL (j', k')) (d :: DUAL (j', k')). (c ~> a) -> (b ~> d) -> DistribDual p q a b -> DistribDual p q c d Source Comments #

(\\) :: forall (a :: (DUAL j, DUAL k)) (b :: DUAL (j', k')) r. ((Ob a, Ob b) => r) -> DistribDual p q a b -> r Source Comments #

type UN ('OP :: j -> OPPOSITE j) ('OP k :: OPPOSITE j) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type UN ('OP :: j -> OPPOSITE j) ('OP k :: OPPOSITE j) = k
type Unit Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type Unit = 'OP (Unit :: k)
type (~>) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (~>) = Op ((~>) :: CAT k)
type InitialObject Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type TerminalObject Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type Ob (a :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type Ob (a :: OPPOSITE k) = (Is ('OP :: k -> OPPOSITE k) a, Ob (UN ('OP :: k -> OPPOSITE k) a))
type (a :: OPPOSITE k) ** (b :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (a :: OPPOSITE k) ** (b :: OPPOSITE k) = 'OP (UN ('OP :: k -> OPPOSITE k) a ** UN ('OP :: k -> OPPOSITE k) b)
type (a :: OPPOSITE k) || (b :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (a :: OPPOSITE k) || (b :: OPPOSITE k) = 'OP (UN ('OP :: k -> OPPOSITE k) a && UN ('OP :: k -> OPPOSITE k) b)
type (a :: OPPOSITE k) && (b :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (a :: OPPOSITE k) && (b :: OPPOSITE k) = 'OP (UN ('OP :: k -> OPPOSITE k) a || UN ('OP :: k -> OPPOSITE k) b)
type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) %% ('OP a :: OPPOSITE j) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) %% ('OP a :: OPPOSITE j) = 'OP (p % a)
type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) % ('OP a :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) % ('OP a :: OPPOSITE k) = 'OP (p %% a)
type Limit (Hom :: () -> (OPPOSITE k, k) -> Type) (d :: (OPPOSITE k, k) +-> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Limit

type Limit (Hom :: () -> (OPPOSITE k, k) -> Type) (d :: (OPPOSITE k, k) +-> Type) = EndLimit d
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

data Op (p :: j +-> k) (a :: OPPOSITE j) (b :: OPPOSITE k) where Source Comments #

Constructors

Op 

Fields

  • :: forall {j} {k} (p :: j +-> k) (b1 :: k) (a1 :: j). { unOp :: p b1 a1
     
  •    } -> Op p ('OP a1) ('OP b1)
     

Instances

Instances details
Profunctor p => Functor (Op p a :: OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

map :: forall (a0 :: OPPOSITE k) (b :: OPPOSITE k). (a0 ~> b) -> Op p a a0 ~> Op p a b Source Comments #

MonoidalProfunctor p => MonoidalProfunctor (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

par0 :: Op p (Unit :: OPPOSITE j) (Unit :: OPPOSITE k) Source Comments #

par :: forall (x1 :: OPPOSITE j) (x2 :: OPPOSITE k) (y1 :: OPPOSITE j) (y2 :: OPPOSITE k). Op p x1 x2 -> Op p y1 y2 -> Op p (x1 ** y1) (x2 ** y2) Source Comments #

Profunctor p => Profunctor (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

dimap :: forall (c :: OPPOSITE j) (a :: OPPOSITE j) (b :: OPPOSITE k) (d :: OPPOSITE k). (c ~> a) -> (b ~> d) -> Op p a b -> Op p c d Source Comments #

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

Representable p => Corepresentable (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

coindex :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). Op p a b -> (Op p %% a) ~> b Source Comments #

cotabulate :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). Ob a => ((Op p %% a) ~> b) -> Op p a b Source Comments #

corepMap :: forall (a :: OPPOSITE j) (b :: OPPOSITE j). (a ~> b) -> (Op p %% a) ~> (Op p %% b) Source Comments #

Corepresentable p => Representable (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

index :: forall (a :: OPPOSITE j) (b :: OPPOSITE k). Op p a b -> a ~> (Op p % b) Source Comments #

tabulate :: forall (b :: OPPOSITE k) (a :: OPPOSITE j). Ob b => (a ~> (Op p % b)) -> Op p a b Source Comments #

repMap :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (a ~> b) -> (Op p % a) ~> (Op p % b) Source Comments #

Adjunction q p => Adjunction (Op p :: OPPOSITE k -> OPPOSITE j -> Type) (Op q :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Adjunction

Methods

unit :: forall (a :: OPPOSITE j). Ob a => (Op q :.: Op p) a a Source Comments #

counit :: (Op p :.: Op q) :~> ((~>) :: CAT (OPPOSITE k)) Source Comments #

Promonad c => Promonad (Op c :: OPPOSITE j -> OPPOSITE j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

id :: forall (a :: OPPOSITE j). Ob a => Op c a a Source Comments #

(.) :: forall (b :: OPPOSITE j) (c0 :: OPPOSITE j) (a :: OPPOSITE j). Op c b c0 -> Op c a b -> Op c a c0 Source Comments #

type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) %% ('OP a :: OPPOSITE j) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) %% ('OP a :: OPPOSITE j) = 'OP (p % a)
type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) % ('OP a :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type (Op p :: OPPOSITE j -> OPPOSITE k -> Type) % ('OP a :: OPPOSITE k) = 'OP (p %% a)