Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- type (-|) = Adjoint
- class (Covariant t, Covariant u) => Adjoint t u where
- (-|) :: a -> (t a -> b) -> u b
- (|-) :: t a -> (a -> u b) -> b
- phi :: (t a -> b) -> a -> u b
- psi :: (a -> u b) -> t a -> b
- eta :: a -> (u :. t) := a
- epsilon :: ((t :. u) := a) -> a
- (-|$) :: Covariant v => v a -> (t a -> b) -> v (u b)
- ($|-) :: Covariant v => v (t a) -> (a -> u b) -> v b
- ($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. t)) := a) -> (a -> u b) -> (v :. w) := b
- ($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. t))) := a) -> (a -> u b) -> (v :. (w :. x)) := b
- ($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. t)))) := a) -> (a -> u b) -> (v :. (w :. (x :. y))) := b
Documentation
class (Covariant t, Covariant u) => Adjoint t u where Source #
When providing a new instance, you should ensure it satisfies: * Left adjunction identity: phi cozero ≡ identity * Right adjunction identity: psi zero ≡ identity * Left adjunction interchange: phi f ≡ comap f . eta * Right adjunction interchange: psi f ≡ epsilon . comap f
(-|) :: a -> (t a -> b) -> u b infixl 3 Source #
Left adjunction
(|-) :: t a -> (a -> u b) -> b infixl 3 Source #
Right adjunction
phi :: (t a -> b) -> a -> u b Source #
Prefix and flipped version of -|
psi :: (a -> u b) -> t a -> b Source #
Prefix and flipped version of |-
eta :: a -> (u :. t) := a Source #
Also known as unit
epsilon :: ((t :. u) := a) -> a Source #
Also known as counit
(-|$) :: Covariant v => v a -> (t a -> b) -> v (u b) infixl 3 Source #
($|-) :: Covariant v => v (t a) -> (a -> u b) -> v b infixl 3 Source #
Versions of |-
with various nesting levels
($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. t)) := a) -> (a -> u b) -> (v :. w) := b infixl 3 Source #
($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. t))) := a) -> (a -> u b) -> (v :. (w :. x)) := b infixl 3 Source #
($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. t)))) := a) -> (a -> u b) -> (v :. (w :. (x :. y))) := b infixl 3 Source #
Instances
Adjoint Identity Identity Source # | |
Defined in Pandora.Paradigm.Primary.Functor.Identity (-|) :: a -> (Identity a -> b) -> Identity b Source # (|-) :: Identity a -> (a -> Identity b) -> b Source # phi :: (Identity a -> b) -> a -> Identity b Source # psi :: (a -> Identity b) -> Identity a -> b Source # eta :: a -> (Identity :. Identity) := a Source # epsilon :: ((Identity :. Identity) := a) -> a Source # (-|$) :: Covariant v => v a -> (Identity a -> b) -> v (Identity b) Source # ($|-) :: Covariant v => v (Identity a) -> (a -> Identity b) -> v b Source # ($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. Identity)) := a) -> (a -> Identity b) -> (v :. w) := b Source # ($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. Identity))) := a) -> (a -> Identity b) -> (v :. (w :. x)) := b Source # ($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. Identity)))) := a) -> (a -> Identity b) -> (v :. (w :. (x :. y))) := b Source # | |
(Extractable t, Pointable t, Extractable u, Pointable u) => Adjoint (Yoneda t) (Yoneda u) Source # | |
Defined in Pandora.Paradigm.Primary.Transformer.Yoneda (-|) :: a -> (Yoneda t a -> b) -> Yoneda u b Source # (|-) :: Yoneda t a -> (a -> Yoneda u b) -> b Source # phi :: (Yoneda t a -> b) -> a -> Yoneda u b Source # psi :: (a -> Yoneda u b) -> Yoneda t a -> b Source # eta :: a -> (Yoneda u :. Yoneda t) := a Source # epsilon :: ((Yoneda t :. Yoneda u) := a) -> a Source # (-|$) :: Covariant v => v a -> (Yoneda t a -> b) -> v (Yoneda u b) Source # ($|-) :: Covariant v => v (Yoneda t a) -> (a -> Yoneda u b) -> v b Source # ($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. Yoneda t)) := a) -> (a -> Yoneda u b) -> (v :. w) := b Source # ($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. Yoneda t))) := a) -> (a -> Yoneda u b) -> (v :. (w :. x)) := b Source # ($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. Yoneda t)))) := a) -> (a -> Yoneda u b) -> (v :. (w :. (x :. y))) := b Source # | |
Adjoint (Store s) (State s) Source # | |
Defined in Pandora.Paradigm.Inventory (-|) :: a -> (Store s a -> b) -> State s b Source # (|-) :: Store s a -> (a -> State s b) -> b Source # phi :: (Store s a -> b) -> a -> State s b Source # psi :: (a -> State s b) -> Store s a -> b Source # eta :: a -> (State s :. Store s) := a Source # epsilon :: ((Store s :. State s) := a) -> a Source # (-|$) :: Covariant v => v a -> (Store s a -> b) -> v (State s b) Source # ($|-) :: Covariant v => v (Store s a) -> (a -> State s b) -> v b Source # ($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. Store s)) := a) -> (a -> State s b) -> (v :. w) := b Source # ($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. Store s))) := a) -> (a -> State s b) -> (v :. (w :. x)) := b Source # ($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. Store s)))) := a) -> (a -> State s b) -> (v :. (w :. (x :. y))) := b Source # | |
Adjoint (Equipment e) (Environment e) Source # | |
Defined in Pandora.Paradigm.Inventory (-|) :: a -> (Equipment e a -> b) -> Environment e b Source # (|-) :: Equipment e a -> (a -> Environment e b) -> b Source # phi :: (Equipment e a -> b) -> a -> Environment e b Source # psi :: (a -> Environment e b) -> Equipment e a -> b Source # eta :: a -> (Environment e :. Equipment e) := a Source # epsilon :: ((Equipment e :. Environment e) := a) -> a Source # (-|$) :: Covariant v => v a -> (Equipment e a -> b) -> v (Environment e b) Source # ($|-) :: Covariant v => v (Equipment e a) -> (a -> Environment e b) -> v b Source # ($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. Equipment e)) := a) -> (a -> Environment e b) -> (v :. w) := b Source # ($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. Equipment e))) := a) -> (a -> Environment e b) -> (v :. (w :. x)) := b Source # ($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. Equipment e)))) := a) -> (a -> Environment e b) -> (v :. (w :. (x :. y))) := b Source # | |
Adjoint (Accumulator e) (Imprint e) Source # | |
Defined in Pandora.Paradigm.Inventory (-|) :: a -> (Accumulator e a -> b) -> Imprint e b Source # (|-) :: Accumulator e a -> (a -> Imprint e b) -> b Source # phi :: (Accumulator e a -> b) -> a -> Imprint e b Source # psi :: (a -> Imprint e b) -> Accumulator e a -> b Source # eta :: a -> (Imprint e :. Accumulator e) := a Source # epsilon :: ((Accumulator e :. Imprint e) := a) -> a Source # (-|$) :: Covariant v => v a -> (Accumulator e a -> b) -> v (Imprint e b) Source # ($|-) :: Covariant v => v (Accumulator e a) -> (a -> Imprint e b) -> v b Source # ($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. Accumulator e)) := a) -> (a -> Imprint e b) -> (v :. w) := b Source # ($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. Accumulator e))) := a) -> (a -> Imprint e b) -> (v :. (w :. x)) := b Source # ($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. Accumulator e)))) := a) -> (a -> Imprint e b) -> (v :. (w :. (x :. y))) := b Source # | |
Adjoint (Product s) ((->) s :: Type -> Type) Source # | |
Defined in Pandora.Paradigm.Primary.Functor (-|) :: a -> (Product s a -> b) -> s -> b Source # (|-) :: Product s a -> (a -> s -> b) -> b Source # phi :: (Product s a -> b) -> a -> s -> b Source # psi :: (a -> s -> b) -> Product s a -> b Source # eta :: a -> ((->) s :. Product s) := a Source # epsilon :: ((Product s :. (->) s) := a) -> a Source # (-|$) :: Covariant v => v a -> (Product s a -> b) -> v (s -> b) Source # ($|-) :: Covariant v => v (Product s a) -> (a -> s -> b) -> v b Source # ($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. Product s)) := a) -> (a -> s -> b) -> (v :. w) := b Source # ($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. Product s))) := a) -> (a -> s -> b) -> (v :. (w :. x)) := b Source # ($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. Product s)))) := a) -> (a -> s -> b) -> (v :. (w :. (x :. y))) := b Source # | |
(Covariant (t <.:> v), Covariant (w <:.> u), Adjoint v u, Adjoint t w) => Adjoint (t <.:> v) (w <:.> u) Source # | |
Defined in Pandora.Paradigm.Schemes (-|) :: a -> ((t <.:> v) a -> b) -> (w <:.> u) b Source # (|-) :: (t <.:> v) a -> (a -> (w <:.> u) b) -> b Source # phi :: ((t <.:> v) a -> b) -> a -> (w <:.> u) b Source # psi :: (a -> (w <:.> u) b) -> (t <.:> v) a -> b Source # eta :: a -> ((w <:.> u) :. (t <.:> v)) := a Source # epsilon :: (((t <.:> v) :. (w <:.> u)) := a) -> a Source # (-|$) :: Covariant v0 => v0 a -> ((t <.:> v) a -> b) -> v0 ((w <:.> u) b) Source # ($|-) :: Covariant v0 => v0 ((t <.:> v) a) -> (a -> (w <:.> u) b) -> v0 b Source # ($$|-) :: (Covariant v0, Covariant w0) => ((v0 :. (w0 :. (t <.:> v))) := a) -> (a -> (w <:.> u) b) -> (v0 :. w0) := b Source # ($$$|-) :: (Covariant v0, Covariant w0, Covariant x) => ((v0 :. (w0 :. (x :. (t <.:> v)))) := a) -> (a -> (w <:.> u) b) -> (v0 :. (w0 :. x)) := b Source # ($$$$|-) :: (Covariant v0, Covariant w0, Covariant x, Covariant y) => ((v0 :. (w0 :. (x :. (y :. (t <.:> v))))) := a) -> (a -> (w <:.> u) b) -> (v0 :. (w0 :. (x :. y))) := b Source # | |
(Covariant (t <.:> v), Covariant (w <.:> u), Adjoint t u, Adjoint v w) => Adjoint (t <.:> v) (w <.:> u) Source # | |
Defined in Pandora.Paradigm.Schemes (-|) :: a -> ((t <.:> v) a -> b) -> (w <.:> u) b Source # (|-) :: (t <.:> v) a -> (a -> (w <.:> u) b) -> b Source # phi :: ((t <.:> v) a -> b) -> a -> (w <.:> u) b Source # psi :: (a -> (w <.:> u) b) -> (t <.:> v) a -> b Source # eta :: a -> ((w <.:> u) :. (t <.:> v)) := a Source # epsilon :: (((t <.:> v) :. (w <.:> u)) := a) -> a Source # (-|$) :: Covariant v0 => v0 a -> ((t <.:> v) a -> b) -> v0 ((w <.:> u) b) Source # ($|-) :: Covariant v0 => v0 ((t <.:> v) a) -> (a -> (w <.:> u) b) -> v0 b Source # ($$|-) :: (Covariant v0, Covariant w0) => ((v0 :. (w0 :. (t <.:> v))) := a) -> (a -> (w <.:> u) b) -> (v0 :. w0) := b Source # ($$$|-) :: (Covariant v0, Covariant w0, Covariant x) => ((v0 :. (w0 :. (x :. (t <.:> v)))) := a) -> (a -> (w <.:> u) b) -> (v0 :. (w0 :. x)) := b Source # ($$$$|-) :: (Covariant v0, Covariant w0, Covariant x, Covariant y) => ((v0 :. (w0 :. (x :. (y :. (t <.:> v))))) := a) -> (a -> (w <.:> u) b) -> (v0 :. (w0 :. (x :. y))) := b Source # | |
(Covariant (v <:.> t), Covariant (w <.:> u), Adjoint t u, Adjoint v w) => Adjoint (v <:.> t) (w <.:> u) Source # | |
Defined in Pandora.Paradigm.Schemes (-|) :: a -> ((v <:.> t) a -> b) -> (w <.:> u) b Source # (|-) :: (v <:.> t) a -> (a -> (w <.:> u) b) -> b Source # phi :: ((v <:.> t) a -> b) -> a -> (w <.:> u) b Source # psi :: (a -> (w <.:> u) b) -> (v <:.> t) a -> b Source # eta :: a -> ((w <.:> u) :. (v <:.> t)) := a Source # epsilon :: (((v <:.> t) :. (w <.:> u)) := a) -> a Source # (-|$) :: Covariant v0 => v0 a -> ((v <:.> t) a -> b) -> v0 ((w <.:> u) b) Source # ($|-) :: Covariant v0 => v0 ((v <:.> t) a) -> (a -> (w <.:> u) b) -> v0 b Source # ($$|-) :: (Covariant v0, Covariant w0) => ((v0 :. (w0 :. (v <:.> t))) := a) -> (a -> (w <.:> u) b) -> (v0 :. w0) := b Source # ($$$|-) :: (Covariant v0, Covariant w0, Covariant x) => ((v0 :. (w0 :. (x :. (v <:.> t)))) := a) -> (a -> (w <.:> u) b) -> (v0 :. (w0 :. x)) := b Source # ($$$$|-) :: (Covariant v0, Covariant w0, Covariant x, Covariant y) => ((v0 :. (w0 :. (x :. (y :. (v <:.> t))))) := a) -> (a -> (w <.:> u) b) -> (v0 :. (w0 :. (x :. y))) := b Source # | |
(Covariant (v <:.> t), Covariant (u <:.> w), Adjoint t u, Adjoint v w) => Adjoint (v <:.> t) (u <:.> w) Source # | |
Defined in Pandora.Paradigm.Schemes (-|) :: a -> ((v <:.> t) a -> b) -> (u <:.> w) b Source # (|-) :: (v <:.> t) a -> (a -> (u <:.> w) b) -> b Source # phi :: ((v <:.> t) a -> b) -> a -> (u <:.> w) b Source # psi :: (a -> (u <:.> w) b) -> (v <:.> t) a -> b Source # eta :: a -> ((u <:.> w) :. (v <:.> t)) := a Source # epsilon :: (((v <:.> t) :. (u <:.> w)) := a) -> a Source # (-|$) :: Covariant v0 => v0 a -> ((v <:.> t) a -> b) -> v0 ((u <:.> w) b) Source # ($|-) :: Covariant v0 => v0 ((v <:.> t) a) -> (a -> (u <:.> w) b) -> v0 b Source # ($$|-) :: (Covariant v0, Covariant w0) => ((v0 :. (w0 :. (v <:.> t))) := a) -> (a -> (u <:.> w) b) -> (v0 :. w0) := b Source # ($$$|-) :: (Covariant v0, Covariant w0, Covariant x) => ((v0 :. (w0 :. (x :. (v <:.> t)))) := a) -> (a -> (u <:.> w) b) -> (v0 :. (w0 :. x)) := b Source # ($$$$|-) :: (Covariant v0, Covariant w0, Covariant x, Covariant y) => ((v0 :. (w0 :. (x :. (y :. (v <:.> t))))) := a) -> (a -> (u <:.> w) b) -> (v0 :. (w0 :. (x :. y))) := b Source # | |
(Covariant ((t <:<.>:> u) t'), Covariant ((v <:<.>:> w) v'), Adjoint t w, Adjoint t' v', Adjoint t v, Adjoint u v, Adjoint v' t') => Adjoint ((t <:<.>:> u) t') ((v <:<.>:> w) v') Source # | |
Defined in Pandora.Paradigm.Schemes (-|) :: a -> ((t <:<.>:> u) t' a -> b) -> (v <:<.>:> w) v' b Source # (|-) :: (t <:<.>:> u) t' a -> (a -> (v <:<.>:> w) v' b) -> b Source # phi :: ((t <:<.>:> u) t' a -> b) -> a -> (v <:<.>:> w) v' b Source # psi :: (a -> (v <:<.>:> w) v' b) -> (t <:<.>:> u) t' a -> b Source # eta :: a -> ((v <:<.>:> w) v' :. (t <:<.>:> u) t') := a Source # epsilon :: (((t <:<.>:> u) t' :. (v <:<.>:> w) v') := a) -> a Source # (-|$) :: Covariant v0 => v0 a -> ((t <:<.>:> u) t' a -> b) -> v0 ((v <:<.>:> w) v' b) Source # ($|-) :: Covariant v0 => v0 ((t <:<.>:> u) t' a) -> (a -> (v <:<.>:> w) v' b) -> v0 b Source # ($$|-) :: (Covariant v0, Covariant w0) => ((v0 :. (w0 :. (t <:<.>:> u) t')) := a) -> (a -> (v <:<.>:> w) v' b) -> (v0 :. w0) := b Source # ($$$|-) :: (Covariant v0, Covariant w0, Covariant x) => ((v0 :. (w0 :. (x :. (t <:<.>:> u) t'))) := a) -> (a -> (v <:<.>:> w) v' b) -> (v0 :. (w0 :. x)) := b Source # ($$$$|-) :: (Covariant v0, Covariant w0, Covariant x, Covariant y) => ((v0 :. (w0 :. (x :. (y :. (t <:<.>:> u) t')))) := a) -> (a -> (v <:<.>:> w) v' b) -> (v0 :. (w0 :. (x :. y))) := b Source # |