module Pandora.Pattern.Functor.Adjoint where
import Pandora.Pattern.Functor.Covariant (Covariant)
type (-|) = Adjoint
infixl 1 ---------|, |---------
infixl 2 --------|, |--------
infixl 3 -------|, |-------
infixl 4 ------|, |------
infixl 5 -----|, |-----
infixl 6 ----|, |----
infixl 7 ---|, |---
infixl 8 --|, |--
infixl 9 -|, |-
class (Covariant target source t, Covariant source target u) => Adjoint source target t u where
(-|) :: source (t a) b -> target a (u b)
(|-) :: target a (u b) -> source (t a) b
(|--), (|---), (|----), (|-----), (|------), (|-------), (|--------), (|---------) :: target a (u b) -> source (t a) b
(|--) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|-)
(|---) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|-)
(|----) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|-)
(|-----) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|-)
(|------) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|-)
(|-------) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|-)
(|--------) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|-)
(|---------) = target a (u b) -> source (t a) b
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
target a (u b) -> source (t a) b
(|--)
(--|), (---|), (----|), (-----|), (------|), (-------|), (--------|), (---------|) :: source (t a) b -> target a (u b)
(--|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)
(---|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)
(----|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)
(-----|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)
(------|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)
(-------|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)
(--------|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)
(---------|) = source (t a) b -> target a (u b)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
Adjoint source target t u =>
source (t a) b -> target a (u b)
(-|)