Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- class Covariant t => Extendable t where
- (=>>) :: t a -> (t a -> b) -> t b
- (<<=) :: (t a -> b) -> t a -> t b
- extend :: (t a -> b) -> t a -> t b
- duplicate :: t a -> (t :. t) := a
- (=<=) :: (t b -> c) -> (t a -> b) -> t a -> c
- (=>=) :: (t a -> b) -> (t b -> c) -> t a -> c
- ($=>>) :: Covariant u => (t a -> b) -> ((u :. t) := a) -> (u :. t) := b
- (<<=$) :: Covariant u => ((u :. t) := a) -> (t a -> b) -> (u :. t) := b
Documentation
class Covariant t => Extendable t where Source #
When providing a new instance, you should ensure it satisfies the three laws: * Duplication interchange: comap (comap f) . duplicate ≡ duplicate . comap f * Extension interchange: extend f ≡ comap f . duplicate
(=>>) :: t a -> (t a -> b) -> t b infixl 1 Source #
Infix and flipped version of extend
, the dual of >>=
(<<=) :: (t a -> b) -> t a -> t b infixr 1 Source #
Flipped version of >>=
, the dual of =<<
extend :: (t a -> b) -> t a -> t b Source #
Prefix and flipped version of =>>
, the dual of bind
duplicate :: t a -> (t :. t) := a Source #
Clone existing structure, the dual of join
(=<=) :: (t b -> c) -> (t a -> b) -> t a -> c infixr 1 Source #
Right-to-left Cokleisli composition
(=>=) :: (t a -> b) -> (t b -> c) -> t a -> c infixr 1 Source #
Left-to-right Cokleisli composition
($=>>) :: Covariant u => (t a -> b) -> ((u :. t) := a) -> (u :. t) := b Source #
Experimental methods
(<<=$) :: Covariant u => ((u :. t) := a) -> (t a -> b) -> (u :. t) := b Source #
Instances
Extendable Identity Source # | |
Defined in Pandora.Paradigm.Primary.Functor.Identity (=>>) :: Identity a -> (Identity a -> b) -> Identity b Source # (<<=) :: (Identity a -> b) -> Identity a -> Identity b Source # extend :: (Identity a -> b) -> Identity a -> Identity b Source # duplicate :: Identity a -> (Identity :. Identity) := a Source # (=<=) :: (Identity b -> c) -> (Identity a -> b) -> Identity a -> c Source # (=>=) :: (Identity a -> b) -> (Identity b -> c) -> Identity a -> c Source # ($=>>) :: Covariant u => (Identity a -> b) -> ((u :. Identity) := a) -> (u :. Identity) := b Source # (<<=$) :: Covariant u => ((u :. Identity) := a) -> (Identity a -> b) -> (u :. Identity) := b Source # | |
Extendable (Proxy :: Type -> Type) Source # | |
Defined in Pandora.Paradigm.Primary.Functor.Proxy (=>>) :: Proxy a -> (Proxy a -> b) -> Proxy b Source # (<<=) :: (Proxy a -> b) -> Proxy a -> Proxy b Source # extend :: (Proxy a -> b) -> Proxy a -> Proxy b Source # duplicate :: Proxy a -> (Proxy :. Proxy) := a Source # (=<=) :: (Proxy b -> c) -> (Proxy a -> b) -> Proxy a -> c Source # (=>=) :: (Proxy a -> b) -> (Proxy b -> c) -> Proxy a -> c Source # ($=>>) :: Covariant u => (Proxy a -> b) -> ((u :. Proxy) := a) -> (u :. Proxy) := b Source # (<<=$) :: Covariant u => ((u :. Proxy) := a) -> (Proxy a -> b) -> (u :. Proxy) := b Source # | |
Extendable (Product a) Source # | |
Defined in Pandora.Paradigm.Primary.Functor.Product (=>>) :: Product a a0 -> (Product a a0 -> b) -> Product a b Source # (<<=) :: (Product a a0 -> b) -> Product a a0 -> Product a b Source # extend :: (Product a a0 -> b) -> Product a a0 -> Product a b Source # duplicate :: Product a a0 -> (Product a :. Product a) := a0 Source # (=<=) :: (Product a b -> c) -> (Product a a0 -> b) -> Product a a0 -> c Source # (=>=) :: (Product a a0 -> b) -> (Product a b -> c) -> Product a a0 -> c Source # ($=>>) :: Covariant u => (Product a a0 -> b) -> ((u :. Product a) := a0) -> (u :. Product a) := b Source # (<<=$) :: Covariant u => ((u :. Product a) := a0) -> (Product a a0 -> b) -> (u :. Product a) := b Source # | |
Semigroup e => Extendable (Imprint e) Source # | |
Defined in Pandora.Paradigm.Inventory.Imprint (=>>) :: Imprint e a -> (Imprint e a -> b) -> Imprint e b Source # (<<=) :: (Imprint e a -> b) -> Imprint e a -> Imprint e b Source # extend :: (Imprint e a -> b) -> Imprint e a -> Imprint e b Source # duplicate :: Imprint e a -> (Imprint e :. Imprint e) := a Source # (=<=) :: (Imprint e b -> c) -> (Imprint e a -> b) -> Imprint e a -> c Source # (=>=) :: (Imprint e a -> b) -> (Imprint e b -> c) -> Imprint e a -> c Source # ($=>>) :: Covariant u => (Imprint e a -> b) -> ((u :. Imprint e) := a) -> (u :. Imprint e) := b Source # (<<=$) :: Covariant u => ((u :. Imprint e) := a) -> (Imprint e a -> b) -> (u :. Imprint e) := b Source # | |
Extendable (Store p) Source # | |
Defined in Pandora.Paradigm.Inventory.Store (=>>) :: Store p a -> (Store p a -> b) -> Store p b Source # (<<=) :: (Store p a -> b) -> Store p a -> Store p b Source # extend :: (Store p a -> b) -> Store p a -> Store p b Source # duplicate :: Store p a -> (Store p :. Store p) := a Source # (=<=) :: (Store p b -> c) -> (Store p a -> b) -> Store p a -> c Source # (=>=) :: (Store p a -> b) -> (Store p b -> c) -> Store p a -> c Source # ($=>>) :: Covariant u => (Store p a -> b) -> ((u :. Store p) := a) -> (u :. Store p) := b Source # (<<=$) :: Covariant u => ((u :. Store p) := a) -> (Store p a -> b) -> (u :. Store p) := b Source # | |
Extendable (Equipment e) Source # | |
Defined in Pandora.Paradigm.Inventory.Equipment (=>>) :: Equipment e a -> (Equipment e a -> b) -> Equipment e b Source # (<<=) :: (Equipment e a -> b) -> Equipment e a -> Equipment e b Source # extend :: (Equipment e a -> b) -> Equipment e a -> Equipment e b Source # duplicate :: Equipment e a -> (Equipment e :. Equipment e) := a Source # (=<=) :: (Equipment e b -> c) -> (Equipment e a -> b) -> Equipment e a -> c Source # (=>=) :: (Equipment e a -> b) -> (Equipment e b -> c) -> Equipment e a -> c Source # ($=>>) :: Covariant u => (Equipment e a -> b) -> ((u :. Equipment e) := a) -> (u :. Equipment e) := b Source # (<<=$) :: Covariant u => ((u :. Equipment e) := a) -> (Equipment e a -> b) -> (u :. Equipment e) := b Source # | |
(Extractable t, Extendable t) => Extendable (Tap t) Source # | |
Defined in Pandora.Paradigm.Primary.Transformer.Tap (=>>) :: Tap t a -> (Tap t a -> b) -> Tap t b Source # (<<=) :: (Tap t a -> b) -> Tap t a -> Tap t b Source # extend :: (Tap t a -> b) -> Tap t a -> Tap t b Source # duplicate :: Tap t a -> (Tap t :. Tap t) := a Source # (=<=) :: (Tap t b -> c) -> (Tap t a -> b) -> Tap t a -> c Source # (=>=) :: (Tap t a -> b) -> (Tap t b -> c) -> Tap t a -> c Source # ($=>>) :: Covariant u => (Tap t a -> b) -> ((u :. Tap t) := a) -> (u :. Tap t) := b Source # (<<=$) :: Covariant u => ((u :. Tap t) := a) -> (Tap t a -> b) -> (u :. Tap t) := b Source # | |
Covariant t => Extendable (Construction t) Source # | |
Defined in Pandora.Paradigm.Primary.Transformer.Construction (=>>) :: Construction t a -> (Construction t a -> b) -> Construction t b Source # (<<=) :: (Construction t a -> b) -> Construction t a -> Construction t b Source # extend :: (Construction t a -> b) -> Construction t a -> Construction t b Source # duplicate :: Construction t a -> (Construction t :. Construction t) := a Source # (=<=) :: (Construction t b -> c) -> (Construction t a -> b) -> Construction t a -> c Source # (=>=) :: (Construction t a -> b) -> (Construction t b -> c) -> Construction t a -> c Source # ($=>>) :: Covariant u => (Construction t a -> b) -> ((u :. Construction t) := a) -> (u :. Construction t) := b Source # (<<=$) :: Covariant u => ((u :. Construction t) := a) -> (Construction t a -> b) -> (u :. Construction t) := b Source # | |
Extendable (Schematic Monad t u) => Extendable (t :> u) Source # | |
Defined in Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (=>>) :: (t :> u) a -> ((t :> u) a -> b) -> (t :> u) b Source # (<<=) :: ((t :> u) a -> b) -> (t :> u) a -> (t :> u) b Source # extend :: ((t :> u) a -> b) -> (t :> u) a -> (t :> u) b Source # duplicate :: (t :> u) a -> ((t :> u) :. (t :> u)) := a Source # (=<=) :: ((t :> u) b -> c) -> ((t :> u) a -> b) -> (t :> u) a -> c Source # (=>=) :: ((t :> u) a -> b) -> ((t :> u) b -> c) -> (t :> u) a -> c Source # ($=>>) :: Covariant u0 => ((t :> u) a -> b) -> ((u0 :. (t :> u)) := a) -> (u0 :. (t :> u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. (t :> u)) := a) -> ((t :> u) a -> b) -> (u0 :. (t :> u)) := b Source # | |
Extendable (Schematic Comonad t u) => Extendable (t :< u) Source # | |
Defined in Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic (=>>) :: (t :< u) a -> ((t :< u) a -> b) -> (t :< u) b Source # (<<=) :: ((t :< u) a -> b) -> (t :< u) a -> (t :< u) b Source # extend :: ((t :< u) a -> b) -> (t :< u) a -> (t :< u) b Source # duplicate :: (t :< u) a -> ((t :< u) :. (t :< u)) := a Source # (=<=) :: ((t :< u) b -> c) -> ((t :< u) a -> b) -> (t :< u) a -> c Source # (=>=) :: ((t :< u) a -> b) -> ((t :< u) b -> c) -> (t :< u) a -> c Source # ($=>>) :: Covariant u0 => ((t :< u) a -> b) -> ((u0 :. (t :< u)) := a) -> (u0 :. (t :< u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. (t :< u)) := a) -> ((t :< u) a -> b) -> (u0 :. (t :< u)) := b Source # | |
Extendable (Tagged tag) Source # | |
Defined in Pandora.Paradigm.Primary.Functor.Tagged (=>>) :: Tagged tag a -> (Tagged tag a -> b) -> Tagged tag b Source # (<<=) :: (Tagged tag a -> b) -> Tagged tag a -> Tagged tag b Source # extend :: (Tagged tag a -> b) -> Tagged tag a -> Tagged tag b Source # duplicate :: Tagged tag a -> (Tagged tag :. Tagged tag) := a Source # (=<=) :: (Tagged tag b -> c) -> (Tagged tag a -> b) -> Tagged tag a -> c Source # (=>=) :: (Tagged tag a -> b) -> (Tagged tag b -> c) -> Tagged tag a -> c Source # ($=>>) :: Covariant u => (Tagged tag a -> b) -> ((u :. Tagged tag) := a) -> (u :. Tagged tag) := b Source # (<<=$) :: Covariant u => ((u :. Tagged tag) := a) -> (Tagged tag a -> b) -> (u :. Tagged tag) := b Source # | |
(Extendable t, Extendable u) => Extendable (Day t u) Source # | |
Defined in Pandora.Paradigm.Primary.Transformer.Day (=>>) :: Day t u a -> (Day t u a -> b) -> Day t u b Source # (<<=) :: (Day t u a -> b) -> Day t u a -> Day t u b Source # extend :: (Day t u a -> b) -> Day t u a -> Day t u b Source # duplicate :: Day t u a -> (Day t u :. Day t u) := a Source # (=<=) :: (Day t u b -> c) -> (Day t u a -> b) -> Day t u a -> c Source # (=>=) :: (Day t u a -> b) -> (Day t u b -> c) -> Day t u a -> c Source # ($=>>) :: Covariant u0 => (Day t u a -> b) -> ((u0 :. Day t u) := a) -> (u0 :. Day t u) := b Source # (<<=$) :: Covariant u0 => ((u0 :. Day t u) := a) -> (Day t u a -> b) -> (u0 :. Day t u) := b Source # | |
Extendable u => Extendable (((:*:) p <:<.>:> ((->) p :: Type -> Type)) := u) Source # | |
Defined in Pandora.Paradigm.Inventory.Store (=>>) :: (((:*:) p <:<.>:> (->) p) := u) a -> ((((:*:) p <:<.>:> (->) p) := u) a -> b) -> (((:*:) p <:<.>:> (->) p) := u) b Source # (<<=) :: ((((:*:) p <:<.>:> (->) p) := u) a -> b) -> (((:*:) p <:<.>:> (->) p) := u) a -> (((:*:) p <:<.>:> (->) p) := u) b Source # extend :: ((((:*:) p <:<.>:> (->) p) := u) a -> b) -> (((:*:) p <:<.>:> (->) p) := u) a -> (((:*:) p <:<.>:> (->) p) := u) b Source # duplicate :: (((:*:) p <:<.>:> (->) p) := u) a -> ((((:*:) p <:<.>:> (->) p) := u) :. (((:*:) p <:<.>:> (->) p) := u)) := a Source # (=<=) :: ((((:*:) p <:<.>:> (->) p) := u) b -> c) -> ((((:*:) p <:<.>:> (->) p) := u) a -> b) -> (((:*:) p <:<.>:> (->) p) := u) a -> c Source # (=>=) :: ((((:*:) p <:<.>:> (->) p) := u) a -> b) -> ((((:*:) p <:<.>:> (->) p) := u) b -> c) -> (((:*:) p <:<.>:> (->) p) := u) a -> c Source # ($=>>) :: Covariant u0 => ((((:*:) p <:<.>:> (->) p) := u) a -> b) -> ((u0 :. (((:*:) p <:<.>:> (->) p) := u)) := a) -> (u0 :. (((:*:) p <:<.>:> (->) p) := u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. (((:*:) p <:<.>:> (->) p) := u)) := a) -> ((((:*:) p <:<.>:> (->) p) := u) a -> b) -> (u0 :. (((:*:) p <:<.>:> (->) p) := u)) := b Source # | |
(Semigroup e, Extendable u) => Extendable (((->) e :: Type -> Type) <.:> u) Source # | |
Defined in Pandora.Paradigm.Inventory.Imprint (=>>) :: ((->) e <.:> u) a -> (((->) e <.:> u) a -> b) -> ((->) e <.:> u) b Source # (<<=) :: (((->) e <.:> u) a -> b) -> ((->) e <.:> u) a -> ((->) e <.:> u) b Source # extend :: (((->) e <.:> u) a -> b) -> ((->) e <.:> u) a -> ((->) e <.:> u) b Source # duplicate :: ((->) e <.:> u) a -> (((->) e <.:> u) :. ((->) e <.:> u)) := a Source # (=<=) :: (((->) e <.:> u) b -> c) -> (((->) e <.:> u) a -> b) -> ((->) e <.:> u) a -> c Source # (=>=) :: (((->) e <.:> u) a -> b) -> (((->) e <.:> u) b -> c) -> ((->) e <.:> u) a -> c Source # ($=>>) :: Covariant u0 => (((->) e <.:> u) a -> b) -> ((u0 :. ((->) e <.:> u)) := a) -> (u0 :. ((->) e <.:> u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. ((->) e <.:> u)) := a) -> (((->) e <.:> u) a -> b) -> (u0 :. ((->) e <.:> u)) := b Source # | |
Extendable u => Extendable ((:*:) e <:.> u) Source # | |
Defined in Pandora.Paradigm.Inventory.Equipment (=>>) :: ((:*:) e <:.> u) a -> (((:*:) e <:.> u) a -> b) -> ((:*:) e <:.> u) b Source # (<<=) :: (((:*:) e <:.> u) a -> b) -> ((:*:) e <:.> u) a -> ((:*:) e <:.> u) b Source # extend :: (((:*:) e <:.> u) a -> b) -> ((:*:) e <:.> u) a -> ((:*:) e <:.> u) b Source # duplicate :: ((:*:) e <:.> u) a -> (((:*:) e <:.> u) :. ((:*:) e <:.> u)) := a Source # (=<=) :: (((:*:) e <:.> u) b -> c) -> (((:*:) e <:.> u) a -> b) -> ((:*:) e <:.> u) a -> c Source # (=>=) :: (((:*:) e <:.> u) a -> b) -> (((:*:) e <:.> u) b -> c) -> ((:*:) e <:.> u) a -> c Source # ($=>>) :: Covariant u0 => (((:*:) e <:.> u) a -> b) -> ((u0 :. ((:*:) e <:.> u)) := a) -> (u0 :. ((:*:) e <:.> u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. ((:*:) e <:.> u)) := a) -> (((:*:) e <:.> u) a -> b) -> (u0 :. ((:*:) e <:.> u)) := b Source # |