| Copyright | (C) 2012-2016 Edward Kmett | 
|---|---|
| License | BSD-style (see the file LICENSE) | 
| Maintainer | Edward Kmett <ekmett@gmail.com> | 
| Stability | experimental | 
| Portability | non-portable | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
Control.Lens.Internal.Context
Description
Synopsis
- class IndexedFunctor (w :: Type -> Type -> Type -> Type) where
- ifmap :: (s -> t) -> w a b s -> w a b t
 
 - class IndexedFunctor w => IndexedComonad (w :: Type -> Type -> Type -> Type) where
- iextract :: w a a t -> t
 - iduplicate :: w a c t -> w a b (w b c t)
 - iextend :: (w b c t -> r) -> w a c t -> w a b r
 
 - class IndexedComonad w => IndexedComonadStore (w :: Type -> Type -> Type -> Type) where
 - class Corepresentable p => Sellable (p :: Type -> Type -> Type) (w :: Type -> Type -> Type -> Type) | w -> p where
- sell :: p a (w a b b)
 
 - data Context a b t = Context (b -> t) a
 - type Context' a = Context a a
 - newtype Pretext (p :: Type -> Type -> Type) a b t = Pretext {
- runPretext :: forall (f :: Type -> Type). Functor f => p a (f b) -> f t
 
 - type Pretext' (p :: Type -> Type -> Type) a = Pretext p a a
 - newtype PretextT (p :: Type -> Type -> Type) (g :: Type -> Type) a b t = PretextT {
- runPretextT :: forall (f :: Type -> Type). Functor f => p a (f b) -> f t
 
 - type PretextT' (p :: Type -> Type -> Type) (g :: Type -> Type) a = PretextT p g a a
 
Documentation
class IndexedFunctor (w :: Type -> Type -> Type -> Type) where Source #
This is a Bob Atkey -style 2-argument indexed functor.
It exists as a superclass for IndexedComonad and expresses the functoriality
 of an IndexedComonad in its third argument.
Instances
| IndexedFunctor Context Source # | |
| IndexedFunctor Mafic Source # | |
| IndexedFunctor (Bazaar p) Source # | |
| IndexedFunctor (Bazaar1 p) Source # | |
| IndexedFunctor (Pretext p) Source # | |
| IndexedFunctor (Molten i) Source # | |
| IndexedFunctor (BazaarT p g) Source # | |
| IndexedFunctor (BazaarT1 p g) Source # | |
| IndexedFunctor (PretextT p g) Source # | |
| IndexedFunctor (TakingWhile p f) Source # | |
Defined in Control.Lens.Internal.Magma Methods ifmap :: (s -> t) -> TakingWhile p f a b s -> TakingWhile p f a b t Source #  | |
class IndexedFunctor w => IndexedComonad (w :: Type -> Type -> Type -> Type) where Source #
This is a Bob Atkey -style 2-argument indexed comonad.
It exists as a superclass for IndexedComonad and expresses the functoriality
 of an IndexedComonad in its third argument.
The notion of indexed monads is covered in more depth in Bob Atkey's "Parameterized Notions of Computation" http://bentnib.org/paramnotions-jfp.pdf and that construction is dualized here.
Minimal complete definition
iextract, (iduplicate | iextend)
Methods
iextract :: w a a t -> t Source #
extract from an indexed comonadic value when the indices match.
iduplicate :: w a c t -> w a b (w b c t) Source #
duplicate an indexed comonadic value splitting the index.
iextend :: (w b c t -> r) -> w a c t -> w a b r Source #
extend a indexed comonadic computation splitting the index.
Instances
| IndexedComonad Context Source # | |
| Conjoined p => IndexedComonad (Bazaar p) Source # | |
| Conjoined p => IndexedComonad (Bazaar1 p) Source # | |
| Conjoined p => IndexedComonad (Pretext p) Source # | |
| IndexedComonad (Molten i) Source # | |
| Conjoined p => IndexedComonad (BazaarT p g) Source # | |
| Conjoined p => IndexedComonad (BazaarT1 p g) Source # | |
| Conjoined p => IndexedComonad (PretextT p g) Source # | |
class IndexedComonad w => IndexedComonadStore (w :: Type -> Type -> Type -> Type) where Source #
This is an indexed analogue to ComonadStore for when you are working with an
 IndexedComonad.
Methods
This is the generalization of pos to an indexed comonad store.
ipeek :: c -> w a c t -> t Source #
This is the generalization of peek to an indexed comonad store.
ipeeks :: (a -> c) -> w a c t -> t Source #
This is the generalization of peeks to an indexed comonad store.
iseek :: b -> w a c t -> w b c t Source #
This is the generalization of seek to an indexed comonad store.
iseeks :: (a -> b) -> w a c t -> w b c t Source #
This is the generalization of seeks to an indexed comonad store.
iexperiment :: Functor f => (b -> f c) -> w b c t -> f t Source #
This is the generalization of experiment to an indexed comonad store.
context :: w a b t -> Context a b t Source #
We can always forget the rest of the structure of w and obtain a simpler
 indexed comonad store model called Context.
Instances
| IndexedComonadStore Context Source # | |
Defined in Control.Lens.Internal.Context Methods ipos :: Context a c t -> a Source # ipeek :: c -> Context a c t -> t Source # ipeeks :: (a -> c) -> Context a c t -> t Source # iseek :: b -> Context a c t -> Context b c t Source # iseeks :: (a -> b) -> Context a c t -> Context b c t Source # iexperiment :: Functor f => (b -> f c) -> Context b c t -> f t Source #  | |
| Conjoined p => IndexedComonadStore (Pretext p) Source # | |
Defined in Control.Lens.Internal.Context Methods ipos :: Pretext p a c t -> a Source # ipeek :: c -> Pretext p a c t -> t Source # ipeeks :: (a -> c) -> Pretext p a c t -> t Source # iseek :: b -> Pretext p a c t -> Pretext p b c t Source # iseeks :: (a -> b) -> Pretext p a c t -> Pretext p b c t Source # iexperiment :: Functor f => (b -> f c) -> Pretext p b c t -> f t Source #  | |
| Conjoined p => IndexedComonadStore (PretextT p g) Source # | |
Defined in Control.Lens.Internal.Context Methods ipos :: PretextT p g a c t -> a Source # ipeek :: c -> PretextT p g a c t -> t Source # ipeeks :: (a -> c) -> PretextT p g a c t -> t Source # iseek :: b -> PretextT p g a c t -> PretextT p g b c t Source # iseeks :: (a -> b) -> PretextT p g a c t -> PretextT p g b c t Source # iexperiment :: Functor f => (b -> f c) -> PretextT p g b c t -> f t Source #  | |
class Corepresentable p => Sellable (p :: Type -> Type -> Type) (w :: Type -> Type -> Type -> Type) | w -> p where Source #
Instances
| Corepresentable p => Sellable p (Bazaar p) Source # | |
Defined in Control.Lens.Internal.Bazaar  | |
| Corepresentable p => Sellable p (Bazaar1 p) Source # | |
Defined in Control.Lens.Internal.Bazaar  | |
| Corepresentable p => Sellable p (Pretext p) Source # | |
Defined in Control.Lens.Internal.Context  | |
| Corepresentable p => Sellable p (BazaarT p g) Source # | |
Defined in Control.Lens.Internal.Bazaar  | |
| Corepresentable p => Sellable p (BazaarT1 p g) Source # | |
Defined in Control.Lens.Internal.Bazaar  | |
| Corepresentable p => Sellable p (PretextT p g) Source # | |
Defined in Control.Lens.Internal.Context  | |
| Sellable (Indexed i) (Molten i) Source # | |
| Sellable (->) Context Source # | |
Defined in Control.Lens.Internal.Context  | |
| Sellable (->) Mafic Source # | |
Defined in Control.Lens.Internal.Magma  | |
The indexed store can be used to characterize a Lens
 and is used by cloneLens.
 is isomorphic to
 Context a b tnewtype ,
 and to Context a b t = Context { runContext :: forall f. Functor f => (a -> f b) -> f t }exists s. (s, .Lens s t a b)
A Context is like a Lens that has already been applied to a some structure.
Constructors
| Context (b -> t) a | 
Instances
newtype Pretext (p :: Type -> Type -> Type) a b t Source #
This is a generalized form of Context that can be repeatedly cloned with less
 impact on its performance, and which permits the use of an arbitrary Conjoined
 Profunctor
Constructors
| Pretext | |
Fields 
  | |
Instances
newtype PretextT (p :: Type -> Type -> Type) (g :: Type -> Type) a b t Source #
This is a generalized form of Context that can be repeatedly cloned with less
 impact on its performance, and which permits the use of an arbitrary Conjoined
 Profunctor.
The extra phantom Functor is used to let us lie and claim
 Getter-compatibility under limited circumstances.
 This is used internally to permit a number of combinators to gracefully
 degrade when applied to a Fold or
 Getter.
Constructors
| PretextT | |
Fields 
  | |