lens-4.12.3: Lenses, Folds and Traversals

Copyright(C) 2012-15 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
PortabilityRank2Types
Safe HaskellSafe
LanguageHaskell98

Control.Lens.Reified

Description

 

Synopsis

Documentation

>>> import Control.Lens

newtype ReifiedLens s t a b Source

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

Constructors

Lens 

Fields

runLens :: Lens s t a b
 

newtype ReifiedIndexedLens i s t a b Source

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

Constructors

IndexedLens 

Fields

runIndexedLens :: IndexedLens i s t a b
 

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

runTraversal :: Traversal s t a b
 

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

runGetter :: Getter s a
 

Instances

 

Methods

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

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

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

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

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

 
 

Methods

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

 

Methods

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

 

Associated Types

type Rep (ReifiedGetter :: * -> * -> *) :: * -> *

Methods

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

 

Associated Types

type Corep (ReifiedGetter :: * -> * -> *) :: * -> *

Methods

cotabulate :: (Corep ReifiedGetter d -> c) -> ReifiedGetter d c

 

Methods

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

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

 

Methods

left' :: ReifiedGetter a b -> ReifiedGetter (Either a c) (Either b c)

right' :: ReifiedGetter a b -> ReifiedGetter (Either c a) (Either c b)

 

Methods

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

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

 

Methods

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

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

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

(#.) :: Coercible * c b => (b -> c) -> ReifiedGetter a b -> ReifiedGetter a c

(.#) :: Coercible * b a => ReifiedGetter b c -> (a -> b) -> ReifiedGetter a c

 

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

 

Methods

id :: ReifiedGetter a a

(.) :: ReifiedGetter b c -> ReifiedGetter a b -> ReifiedGetter a c

 

Methods

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

 

Methods

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

 

Methods

ask :: ReifiedGetter s s

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

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

 

Methods

(>>=) :: ReifiedGetter s a -> (a -> ReifiedGetter s b) -> ReifiedGetter s b

(>>) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s b

return :: a -> ReifiedGetter s a

fail :: String -> ReifiedGetter s a

 

Methods

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

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

 

Methods

pure :: a -> ReifiedGetter s a

(<*>) :: ReifiedGetter s (a -> b) -> ReifiedGetter s a -> ReifiedGetter s b

(*>) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s b

(<*) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s a

 

Methods

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

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

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

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

 
 
 
 

Methods

(>>-) :: ReifiedGetter s a -> (a -> ReifiedGetter s b) -> ReifiedGetter s b

join :: ReifiedGetter s (ReifiedGetter s a) -> ReifiedGetter s a

 
type Rep ReifiedGetter = Identity 
type Corep ReifiedGetter = Identity 

newtype ReifiedIndexedGetter i s a Source

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

Constructors

IndexedGetter 

Instances

 

Associated Types

type Rep (ReifiedIndexedGetter i :: * -> * -> *) :: * -> *

Methods

tabulate :: (d -> Rep (ReifiedIndexedGetter i) c) -> ReifiedIndexedGetter i d c

 

Methods

first' :: ReifiedIndexedGetter i a b -> ReifiedIndexedGetter i (a, c) (b, c)

second' :: ReifiedIndexedGetter i a b -> ReifiedIndexedGetter i (c, a) (c, b)

 

Methods

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

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

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

(#.) :: Coercible * c b => (b -> c) -> ReifiedIndexedGetter i a b -> ReifiedIndexedGetter i a c

(.#) :: Coercible * b a => ReifiedIndexedGetter i b c -> (a -> b) -> ReifiedIndexedGetter i a c

 

Methods

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

 

Methods

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

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

 
type Rep (ReifiedIndexedGetter i) = (,) i 

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

runFold :: Fold s a
 

Instances

 

Methods

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

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

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

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

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

 

Methods

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

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

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

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

 

Methods

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

 

Associated Types

type Rep (ReifiedFold :: * -> * -> *) :: * -> *

Methods

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

 

Methods

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

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

 

Methods

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

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

 

Methods

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

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

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

(#.) :: Coercible * c b => (b -> c) -> ReifiedFold a b -> ReifiedFold a c

(.#) :: Coercible * b a => ReifiedFold b c -> (a -> b) -> ReifiedFold a c

 

Methods

id :: ReifiedFold a a

(.) :: ReifiedFold b c -> ReifiedFold a b -> ReifiedFold a c

 

Methods

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

 

Methods

ask :: ReifiedFold s s

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

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

 

Methods

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

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

return :: a -> ReifiedFold s a

fail :: String -> ReifiedFold s a

 

Methods

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

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

 

Methods

pure :: a -> ReifiedFold s a

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

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

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

 

Methods

empty :: ReifiedFold s a

(<|>) :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a

some :: ReifiedFold s a -> ReifiedFold s [a]

many :: ReifiedFold s a -> ReifiedFold s [a]

 

Methods

mzero :: ReifiedFold s a

mplus :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a

 

Methods

zero :: ReifiedFold s a

 
 

Methods

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

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

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

 

Methods

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

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

 
 
type Rep ReifiedFold = [] 

newtype ReifiedIndexedFold i s a Source

Constructors

IndexedFold 

Fields

runIndexedFold :: IndexedFold i s a
 

Instances

 

Associated Types

type Rep (ReifiedIndexedFold i :: * -> * -> *) :: * -> *

Methods

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

 

Methods

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

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

 

Methods

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

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

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

(#.) :: Coercible * c b => (b -> c) -> ReifiedIndexedFold i a b -> ReifiedIndexedFold i a c

(.#) :: Coercible * b a => ReifiedIndexedFold i b c -> (a -> b) -> ReifiedIndexedFold i a c

 

Methods

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

 

Methods

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

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

 

Methods

zero :: ReifiedIndexedFold i s a

 
 
 
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

runSetter :: Setter s t a b
 

newtype ReifiedIndexedSetter i s t a b Source

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

Constructors

IndexedSetter 

Fields

runIndexedSetter :: IndexedSetter i s t a b
 

newtype ReifiedIso s t a b Source

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

Constructors

Iso 

Fields

runIso :: Iso s t a b
 

newtype ReifiedPrism s t a b Source

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

Constructors

Prism 

Fields

runPrism :: Prism s t a b