Safe Haskell | Safe-Inferred |
---|---|
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 => ((u :. t) := a) -> (t a -> b) -> (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: * 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 => ((u :. t) := a) -> (t a -> b) -> (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 => ((u :. Identity) := a) -> (Identity a -> b) -> (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 => ((u :. Proxy) := a) -> (Proxy a -> b) -> (u :. Proxy) := b Source # (<<=$) :: Covariant u => ((u :. Proxy) := a) -> (Proxy a -> b) -> (u :. Proxy) := b Source # | |
Extendable t => Extendable (Jack t) Source # | |
Defined in Pandora.Paradigm.Primary.Transformer.Jack (=>>) :: Jack t a -> (Jack t a -> b) -> Jack t b Source # (<<=) :: (Jack t a -> b) -> Jack t a -> Jack t b Source # extend :: (Jack t a -> b) -> Jack t a -> Jack t b Source # duplicate :: Jack t a -> (Jack t :. Jack t) := a Source # (=<=) :: (Jack t b -> c) -> (Jack t a -> b) -> Jack t a -> c Source # (=>=) :: (Jack t a -> b) -> (Jack t b -> c) -> Jack t a -> c Source # ($=>>) :: Covariant u => ((u :. Jack t) := a) -> (Jack t a -> b) -> (u :. Jack t) := b Source # (<<=$) :: Covariant u => ((u :. Jack t) := a) -> (Jack t a -> b) -> (u :. Jack t) := b Source # | |
Extendable (Product s) Source # | |
Defined in Pandora.Paradigm.Primary.Functor.Product (=>>) :: Product s a -> (Product s a -> b) -> Product s b Source # (<<=) :: (Product s a -> b) -> Product s a -> Product s b Source # extend :: (Product s a -> b) -> Product s a -> Product s b Source # duplicate :: Product s a -> (Product s :. Product s) := a Source # (=<=) :: (Product s b -> c) -> (Product s a -> b) -> Product s a -> c Source # (=>=) :: (Product s a -> b) -> (Product s b -> c) -> Product s a -> c Source # ($=>>) :: Covariant u => ((u :. Product s) := a) -> (Product s a -> b) -> (u :. Product s) := b Source # (<<=$) :: Covariant u => ((u :. Product s) := a) -> (Product s a -> b) -> (u :. Product s) := b Source # | |
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 => ((u :. Tap t) := a) -> (Tap t a -> b) -> (u :. Tap t) := b Source # (<<=$) :: Covariant u => ((u :. Tap t) := a) -> (Tap t a -> b) -> (u :. Tap t) := b Source # | |
Extendable (Tap ((Stream <:.:> Stream) := (:*:))) Source # | |
Defined in Pandora.Paradigm.Structure.Some.Stream (=>>) :: Tap ((Stream <:.:> Stream) := (:*:)) a -> (Tap ((Stream <:.:> Stream) := (:*:)) a -> b) -> Tap ((Stream <:.:> Stream) := (:*:)) b Source # (<<=) :: (Tap ((Stream <:.:> Stream) := (:*:)) a -> b) -> Tap ((Stream <:.:> Stream) := (:*:)) a -> Tap ((Stream <:.:> Stream) := (:*:)) b Source # extend :: (Tap ((Stream <:.:> Stream) := (:*:)) a -> b) -> Tap ((Stream <:.:> Stream) := (:*:)) a -> Tap ((Stream <:.:> Stream) := (:*:)) b Source # duplicate :: Tap ((Stream <:.:> Stream) := (:*:)) a -> (Tap ((Stream <:.:> Stream) := (:*:)) :. Tap ((Stream <:.:> Stream) := (:*:))) := a Source # (=<=) :: (Tap ((Stream <:.:> Stream) := (:*:)) b -> c) -> (Tap ((Stream <:.:> Stream) := (:*:)) a -> b) -> Tap ((Stream <:.:> Stream) := (:*:)) a -> c Source # (=>=) :: (Tap ((Stream <:.:> Stream) := (:*:)) a -> b) -> (Tap ((Stream <:.:> Stream) := (:*:)) b -> c) -> Tap ((Stream <:.:> Stream) := (:*:)) a -> c Source # ($=>>) :: Covariant u => ((u :. Tap ((Stream <:.:> Stream) := (:*:))) := a) -> (Tap ((Stream <:.:> Stream) := (:*:)) a -> b) -> (u :. Tap ((Stream <:.:> Stream) := (:*:))) := b Source # (<<=$) :: Covariant u => ((u :. Tap ((Stream <:.:> Stream) := (:*:))) := a) -> (Tap ((Stream <:.:> Stream) := (:*:)) a -> b) -> (u :. Tap ((Stream <:.:> Stream) := (:*:))) := b Source # | |
Extendable (Tap ((List <:.:> List) := (:*:))) Source # | |
Defined in Pandora.Paradigm.Structure.Some.List (=>>) :: Tap ((List <:.:> List) := (:*:)) a -> (Tap ((List <:.:> List) := (:*:)) a -> b) -> Tap ((List <:.:> List) := (:*:)) b Source # (<<=) :: (Tap ((List <:.:> List) := (:*:)) a -> b) -> Tap ((List <:.:> List) := (:*:)) a -> Tap ((List <:.:> List) := (:*:)) b Source # extend :: (Tap ((List <:.:> List) := (:*:)) a -> b) -> Tap ((List <:.:> List) := (:*:)) a -> Tap ((List <:.:> List) := (:*:)) b Source # duplicate :: Tap ((List <:.:> List) := (:*:)) a -> (Tap ((List <:.:> List) := (:*:)) :. Tap ((List <:.:> List) := (:*:))) := a Source # (=<=) :: (Tap ((List <:.:> List) := (:*:)) b -> c) -> (Tap ((List <:.:> List) := (:*:)) a -> b) -> Tap ((List <:.:> List) := (:*:)) a -> c Source # (=>=) :: (Tap ((List <:.:> List) := (:*:)) a -> b) -> (Tap ((List <:.:> List) := (:*:)) b -> c) -> Tap ((List <:.:> List) := (:*:)) a -> c Source # ($=>>) :: Covariant u => ((u :. Tap ((List <:.:> List) := (:*:))) := a) -> (Tap ((List <:.:> List) := (:*:)) a -> b) -> (u :. Tap ((List <:.:> List) := (:*:))) := b Source # (<<=$) :: Covariant u => ((u :. Tap ((List <:.:> List) := (:*:))) := a) -> (Tap ((List <:.:> List) := (:*:)) a -> b) -> (u :. Tap ((List <:.:> List) := (:*:))) := 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 => ((u :. Construction t) := a) -> (Construction t a -> b) -> (u :. Construction t) := b Source # (<<=$) :: Covariant u => ((u :. Construction t) := a) -> (Construction t a -> b) -> (u :. Construction t) := b Source # | |
Extendable (Store s) Source # | |
Defined in Pandora.Paradigm.Inventory.Store (=>>) :: Store s a -> (Store s a -> b) -> Store s b Source # (<<=) :: (Store s a -> b) -> Store s a -> Store s b Source # extend :: (Store s a -> b) -> Store s a -> Store s b Source # duplicate :: Store s a -> (Store s :. Store s) := a Source # (=<=) :: (Store s b -> c) -> (Store s a -> b) -> Store s a -> c Source # (=>=) :: (Store s a -> b) -> (Store s b -> c) -> Store s a -> c Source # ($=>>) :: Covariant u => ((u :. Store s) := a) -> (Store s a -> b) -> (u :. Store s) := b Source # (<<=$) :: Covariant u => ((u :. Store s) := a) -> (Store s a -> b) -> (u :. Store s) := 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 => ((u :. Imprint e) := a) -> (Imprint e a -> b) -> (u :. Imprint e) := b Source # (<<=$) :: Covariant u => ((u :. Imprint e) := a) -> (Imprint e a -> b) -> (u :. Imprint e) := 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 => ((u :. Equipment e) := a) -> (Equipment e a -> b) -> (u :. Equipment e) := b Source # (<<=$) :: Covariant u => ((u :. Equipment e) := a) -> (Equipment e a -> b) -> (u :. Equipment e) := 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 => ((u :. Tagged tag) := a) -> (Tagged tag a -> b) -> (u :. Tagged tag) := b Source # (<<=$) :: Covariant u => ((u :. Tagged tag) := a) -> (Tagged tag a -> b) -> (u :. Tagged tag) := 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 => ((u0 :. (t :> u)) := a) -> ((t :> u) a -> b) -> (u0 :. (t :> u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. (t :> u)) := a) -> ((t :> u) a -> b) -> (u0 :. (t :> u)) := 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 => ((u0 :. Day t u) := a) -> (Day t u a -> b) -> (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 (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 => ((u0 :. (t :< u)) := a) -> ((t :< u) a -> b) -> (u0 :. (t :< u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. (t :< u)) := a) -> ((t :< u) a -> b) -> (u0 :. (t :< u)) := b Source # | |
(Adjoint t' t, Extendable u) => Extendable ((t' <:<.>:> t) := u) Source # | |
Defined in Pandora.Paradigm.Schemes.TUT (=>>) :: ((t' <:<.>:> t) := u) a -> (((t' <:<.>:> t) := u) a -> b) -> ((t' <:<.>:> t) := u) b Source # (<<=) :: (((t' <:<.>:> t) := u) a -> b) -> ((t' <:<.>:> t) := u) a -> ((t' <:<.>:> t) := u) b Source # extend :: (((t' <:<.>:> t) := u) a -> b) -> ((t' <:<.>:> t) := u) a -> ((t' <:<.>:> t) := u) b Source # duplicate :: ((t' <:<.>:> t) := u) a -> (((t' <:<.>:> t) := u) :. ((t' <:<.>:> t) := u)) := a Source # (=<=) :: (((t' <:<.>:> t) := u) b -> c) -> (((t' <:<.>:> t) := u) a -> b) -> ((t' <:<.>:> t) := u) a -> c Source # (=>=) :: (((t' <:<.>:> t) := u) a -> b) -> (((t' <:<.>:> t) := u) b -> c) -> ((t' <:<.>:> t) := u) a -> c Source # ($=>>) :: Covariant u0 => ((u0 :. ((t' <:<.>:> t) := u)) := a) -> (((t' <:<.>:> t) := u) a -> b) -> (u0 :. ((t' <:<.>:> t) := u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. ((t' <:<.>:> t) := u)) := a) -> (((t' <:<.>:> t) := u) a -> b) -> (u0 :. ((t' <:<.>:> t) := 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 => ((u0 :. ((->) e <.:> u)) := a) -> (((->) e <.:> u) a -> b) -> (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 => ((u0 :. ((:*:) e <:.> u)) := a) -> (((:*:) e <:.> u) a -> b) -> (u0 :. ((:*:) e <:.> u)) := b Source # (<<=$) :: Covariant u0 => ((u0 :. ((:*:) e <:.> u)) := a) -> (((:*:) e <:.> u) a -> b) -> (u0 :. ((:*:) e <:.> u)) := b Source # |