lens-5.2.3: Lenses, Folds and Traversals
Copyright(C) 2012-16 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
PortabilityRank2Types
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Lens.Reified

Description

 
Synopsis

Documentation

>>> import Control.Lens
>>> import Control.Applicative

newtype ReifiedLens s t a b Source #

Reify a Lens so it can be stored safely in a container.

Constructors

Lens 

Fields

newtype ReifiedIndexedLens i s t a b Source #

Reify an IndexedLens so it can be stored safely in a container.

Constructors

IndexedLens 

Fields

newtype ReifiedIndexedTraversal i s t a b Source #

Reify an IndexedTraversal so it can be stored safely in a container.

Constructors

IndexedTraversal 

newtype ReifiedTraversal s t a b Source #

A form of Traversal that can be stored monomorphically in a container.

Constructors

Traversal 

Fields

newtype ReifiedGetter s a Source #

Reify a Getter so it can be stored safely in a container.

This can also be useful when combining getters in novel ways, as ReifiedGetter is isomorphic to (->) and provides similar instances.

>>> ("hello","world","!!!")^.runGetter ((,) <$> Getter _2 <*> Getter (_1.to length))
("world",5)

Constructors

Getter 

Fields

Instances

Instances details
Arrow ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

arr :: (b -> c) -> ReifiedGetter b c Source #

first :: ReifiedGetter b c -> ReifiedGetter (b, d) (c, d) Source #

second :: ReifiedGetter b c -> ReifiedGetter (d, b) (d, c) Source #

(***) :: ReifiedGetter b c -> ReifiedGetter b' c' -> ReifiedGetter (b, b') (c, c') Source #

(&&&) :: ReifiedGetter b c -> ReifiedGetter b c' -> ReifiedGetter b (c, c') Source #

ArrowApply ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

app :: ReifiedGetter (ReifiedGetter b c, b) c Source #

ArrowChoice ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

ArrowLoop ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

loop :: ReifiedGetter (b, d) (c, d) -> ReifiedGetter b c Source #

Conjoined ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

distrib :: Functor f => ReifiedGetter a b -> ReifiedGetter (f a) (f b) Source #

conjoined :: (ReifiedGetter ~ (->) => q (a -> b) r) -> q (ReifiedGetter a b) r -> q (ReifiedGetter a b) r Source #

Choice ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Closed ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

closed :: ReifiedGetter a b -> ReifiedGetter (x -> a) (x -> b) Source #

Corepresentable ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Associated Types

type Corep ReifiedGetter :: Type -> Type Source #

Representable ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Associated Types

type Rep ReifiedGetter :: Type -> Type Source #

Methods

tabulate :: (d -> Rep ReifiedGetter c) -> ReifiedGetter d c Source #

Costrong ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

unfirst :: ReifiedGetter (a, d) (b, d) -> ReifiedGetter a b Source #

unsecond :: ReifiedGetter (d, a) (d, b) -> ReifiedGetter a b Source #

Strong ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

first' :: ReifiedGetter a b -> ReifiedGetter (a, c) (b, c) Source #

second' :: ReifiedGetter a b -> ReifiedGetter (c, a) (c, b) Source #

Profunctor ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

dimap :: (a -> b) -> (c -> d) -> ReifiedGetter b c -> ReifiedGetter a d Source #

lmap :: (a -> b) -> ReifiedGetter b c -> ReifiedGetter a c Source #

rmap :: (b -> c) -> ReifiedGetter a b -> ReifiedGetter a c Source #

(#.) :: forall a b c q. Coercible c b => q b c -> ReifiedGetter a b -> ReifiedGetter a c Source #

(.#) :: forall a b c q. Coercible b a => ReifiedGetter b c -> q a b -> ReifiedGetter a c Source #

Category ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

Methods

id :: forall (a :: k). ReifiedGetter a a Source #

(.) :: forall (b :: k) (c :: k) (a :: k). ReifiedGetter b c -> ReifiedGetter a b -> ReifiedGetter a c Source #

Cosieve ReifiedGetter Identity Source # 
Instance details

Defined in Control.Lens.Reified

Methods

cosieve :: ReifiedGetter a b -> Identity a -> b Source #

Sieve ReifiedGetter Identity Source # 
Instance details

Defined in Control.Lens.Reified

Methods

sieve :: ReifiedGetter a b -> a -> Identity b Source #

MonadReader s (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

ask :: ReifiedGetter s s Source #

local :: (s -> s) -> ReifiedGetter s a -> ReifiedGetter s a Source #

reader :: (s -> a) -> ReifiedGetter s a Source #

Applicative (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Functor (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

fmap :: (a -> b) -> ReifiedGetter s a -> ReifiedGetter s b Source #

(<$) :: a -> ReifiedGetter s b -> ReifiedGetter s a Source #

Monad (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Monoid s => Comonad (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Monoid s => ComonadApply (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Distributive (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

distribute :: Functor f => f (ReifiedGetter s a) -> ReifiedGetter s (f a) Source #

collect :: Functor f => (a -> ReifiedGetter s b) -> f a -> ReifiedGetter s (f b) Source #

distributeM :: Monad m => m (ReifiedGetter s a) -> ReifiedGetter s (m a) Source #

collectM :: Monad m => (a -> ReifiedGetter s b) -> m a -> ReifiedGetter s (m b) Source #

Apply (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Bind (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

Semigroup s => Extend (ReifiedGetter s) Source # 
Instance details

Defined in Control.Lens.Reified

type Corep ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

type Rep ReifiedGetter Source # 
Instance details

Defined in Control.Lens.Reified

newtype ReifiedIndexedGetter i s a Source #

Reify an IndexedGetter so it can be stored safely in a container.

Constructors

IndexedGetter 

Instances

Instances details
Representable (ReifiedIndexedGetter i) Source # 
Instance details

Defined in Control.Lens.Reified

Associated Types

type Rep (ReifiedIndexedGetter i) :: Type -> Type Source #

Strong (ReifiedIndexedGetter i) Source # 
Instance details

Defined in Control.Lens.Reified

Profunctor (ReifiedIndexedGetter i) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

dimap :: (a -> b) -> (c -> d) -> ReifiedIndexedGetter i b c -> ReifiedIndexedGetter i a d Source #

lmap :: (a -> b) -> ReifiedIndexedGetter i b c -> ReifiedIndexedGetter i a c Source #

rmap :: (b -> c) -> ReifiedIndexedGetter i a b -> ReifiedIndexedGetter i a c Source #

(#.) :: forall a b c q. Coercible c b => q b c -> ReifiedIndexedGetter i a b -> ReifiedIndexedGetter i a c Source #

(.#) :: forall a b c q. Coercible b a => ReifiedIndexedGetter i b c -> q a b -> ReifiedIndexedGetter i a c Source #

Sieve (ReifiedIndexedGetter i) ((,) i) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

sieve :: ReifiedIndexedGetter i a b -> a -> (i, b) Source #

Functor (ReifiedIndexedGetter i s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

fmap :: (a -> b) -> ReifiedIndexedGetter i s a -> ReifiedIndexedGetter i s b Source #

(<$) :: a -> ReifiedIndexedGetter i s b -> ReifiedIndexedGetter i s a Source #

Semigroup i => Apply (ReifiedIndexedGetter i s) Source # 
Instance details

Defined in Control.Lens.Reified

type Rep (ReifiedIndexedGetter i) Source # 
Instance details

Defined in Control.Lens.Reified

newtype ReifiedFold s a Source #

Reify a Fold so it can be stored safely in a container.

This can also be useful for creatively combining folds as ReifiedFold s is isomorphic to ReaderT s [] and provides similar instances.

>>> ("hello","world")^..runFold ((,) <$> Fold _2 <*> Fold both)
[("world","hello"),("world","world")]

Constructors

Fold 

Fields

Instances

Instances details
Arrow ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Methods

arr :: (b -> c) -> ReifiedFold b c Source #

first :: ReifiedFold b c -> ReifiedFold (b, d) (c, d) Source #

second :: ReifiedFold b c -> ReifiedFold (d, b) (d, c) Source #

(***) :: ReifiedFold b c -> ReifiedFold b' c' -> ReifiedFold (b, b') (c, c') Source #

(&&&) :: ReifiedFold b c -> ReifiedFold b c' -> ReifiedFold b (c, c') Source #

ArrowApply ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Methods

app :: ReifiedFold (ReifiedFold b c, b) c Source #

ArrowChoice ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Methods

left :: ReifiedFold b c -> ReifiedFold (Either b d) (Either c d) Source #

right :: ReifiedFold b c -> ReifiedFold (Either d b) (Either d c) Source #

(+++) :: ReifiedFold b c -> ReifiedFold b' c' -> ReifiedFold (Either b b') (Either c c') Source #

(|||) :: ReifiedFold b d -> ReifiedFold c d -> ReifiedFold (Either b c) d Source #

Choice ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Methods

left' :: ReifiedFold a b -> ReifiedFold (Either a c) (Either b c) Source #

right' :: ReifiedFold a b -> ReifiedFold (Either c a) (Either c b) Source #

Representable ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Associated Types

type Rep ReifiedFold :: Type -> Type Source #

Methods

tabulate :: (d -> Rep ReifiedFold c) -> ReifiedFold d c Source #

Strong ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Methods

first' :: ReifiedFold a b -> ReifiedFold (a, c) (b, c) Source #

second' :: ReifiedFold a b -> ReifiedFold (c, a) (c, b) Source #

Profunctor ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Methods

dimap :: (a -> b) -> (c -> d) -> ReifiedFold b c -> ReifiedFold a d Source #

lmap :: (a -> b) -> ReifiedFold b c -> ReifiedFold a c Source #

rmap :: (b -> c) -> ReifiedFold a b -> ReifiedFold a c Source #

(#.) :: forall a b c q. Coercible c b => q b c -> ReifiedFold a b -> ReifiedFold a c Source #

(.#) :: forall a b c q. Coercible b a => ReifiedFold b c -> q a b -> ReifiedFold a c Source #

Category ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

Methods

id :: forall (a :: k). ReifiedFold a a Source #

(.) :: forall (b :: k) (c :: k) (a :: k). ReifiedFold b c -> ReifiedFold a b -> ReifiedFold a c Source #

Sieve ReifiedFold [] Source # 
Instance details

Defined in Control.Lens.Reified

Methods

sieve :: ReifiedFold a b -> a -> [b] Source #

MonadReader s (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

ask :: ReifiedFold s s Source #

local :: (s -> s) -> ReifiedFold s a -> ReifiedFold s a Source #

reader :: (s -> a) -> ReifiedFold s a Source #

Alternative (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Applicative (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

pure :: a -> ReifiedFold s a Source #

(<*>) :: ReifiedFold s (a -> b) -> ReifiedFold s a -> ReifiedFold s b Source #

liftA2 :: (a -> b -> c) -> ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s c Source #

(*>) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s b Source #

(<*) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s a Source #

Functor (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

fmap :: (a -> b) -> ReifiedFold s a -> ReifiedFold s b Source #

(<$) :: a -> ReifiedFold s b -> ReifiedFold s a Source #

Monad (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

(>>=) :: ReifiedFold s a -> (a -> ReifiedFold s b) -> ReifiedFold s b Source #

(>>) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s b Source #

return :: a -> ReifiedFold s a Source #

MonadPlus (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Alt (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Apply (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

(<.>) :: ReifiedFold s (a -> b) -> ReifiedFold s a -> ReifiedFold s b Source #

(.>) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s b Source #

(<.) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s a Source #

liftF2 :: (a -> b -> c) -> ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s c Source #

Bind (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

(>>-) :: ReifiedFold s a -> (a -> ReifiedFold s b) -> ReifiedFold s b Source #

join :: ReifiedFold s (ReifiedFold s a) -> ReifiedFold s a Source #

Plus (ReifiedFold s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

zero :: ReifiedFold s a Source #

Monoid (ReifiedFold s a) Source # 
Instance details

Defined in Control.Lens.Reified

Semigroup (ReifiedFold s a) Source # 
Instance details

Defined in Control.Lens.Reified

type Rep ReifiedFold Source # 
Instance details

Defined in Control.Lens.Reified

type Rep ReifiedFold = []

newtype ReifiedIndexedFold i s a Source #

Constructors

IndexedFold 

Fields

Instances

Instances details
Representable (ReifiedIndexedFold i) Source # 
Instance details

Defined in Control.Lens.Reified

Associated Types

type Rep (ReifiedIndexedFold i) :: Type -> Type Source #

Methods

tabulate :: (d -> Rep (ReifiedIndexedFold i) c) -> ReifiedIndexedFold i d c Source #

Strong (ReifiedIndexedFold i) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

first' :: ReifiedIndexedFold i a b -> ReifiedIndexedFold i (a, c) (b, c) Source #

second' :: ReifiedIndexedFold i a b -> ReifiedIndexedFold i (c, a) (c, b) Source #

Profunctor (ReifiedIndexedFold i) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

dimap :: (a -> b) -> (c -> d) -> ReifiedIndexedFold i b c -> ReifiedIndexedFold i a d Source #

lmap :: (a -> b) -> ReifiedIndexedFold i b c -> ReifiedIndexedFold i a c Source #

rmap :: (b -> c) -> ReifiedIndexedFold i a b -> ReifiedIndexedFold i a c Source #

(#.) :: forall a b c q. Coercible c b => q b c -> ReifiedIndexedFold i a b -> ReifiedIndexedFold i a c Source #

(.#) :: forall a b c q. Coercible b a => ReifiedIndexedFold i b c -> q a b -> ReifiedIndexedFold i a c Source #

Sieve (ReifiedIndexedFold i) (Compose [] ((,) i)) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

sieve :: ReifiedIndexedFold i a b -> a -> Compose [] ((,) i) b Source #

Functor (ReifiedIndexedFold i s) Source # 
Instance details

Defined in Control.Lens.Reified

Methods

fmap :: (a -> b) -> ReifiedIndexedFold i s a -> ReifiedIndexedFold i s b Source #

(<$) :: a -> ReifiedIndexedFold i s b -> ReifiedIndexedFold i s a Source #

Alt (ReifiedIndexedFold i s) Source # 
Instance details

Defined in Control.Lens.Reified

Plus (ReifiedIndexedFold i s) Source # 
Instance details

Defined in Control.Lens.Reified

Monoid (ReifiedIndexedFold i s a) Source # 
Instance details

Defined in Control.Lens.Reified

Semigroup (ReifiedIndexedFold i s a) Source # 
Instance details

Defined in Control.Lens.Reified

type Rep (ReifiedIndexedFold i) Source # 
Instance details

Defined in Control.Lens.Reified

type Rep (ReifiedIndexedFold i) = Compose [] ((,) i)

newtype ReifiedSetter s t a b Source #

Reify a Setter so it can be stored safely in a container.

Constructors

Setter 

Fields

newtype ReifiedIndexedSetter i s t a b Source #

Reify an IndexedSetter so it can be stored safely in a container.

Constructors

IndexedSetter 

Fields

newtype ReifiedIso s t a b Source #

Reify an Iso so it can be stored safely in a container.

Constructors

Iso 

Fields

newtype ReifiedPrism s t a b Source #

Reify a Prism so it can be stored safely in a container.

Constructors

Prism 

Fields