lens-4.18.1: Lenses, Folds and Traversals

Copyright | (C) 2013-16 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | experimental
Portability | non-portable
Safe Haskell | None
Language | Haskell2010

Control.Lens.Combinators

Description

This lets the subset of users who vociferously disagree about the full scope and set of operators that should be exported from lens to not have to look at any operator with which they disagree.

    import Control.Lens.Combinators

Synopsis

- class (Functor t, Foldable t) => Traversable (t :: Type -> Type) where
  - traverse :: Applicative f => (a -> f b) -> t a -> f (t b)
- class Bifunctor (p :: Type -> Type -> Type) where
  - bimap :: (a -> b) -> (c -> d) -> p a c -> p b d
- newtype Identity a = Identity {
  - runIdentity :: a
  }
- data (a :: k) :~: (b :: k) where
  - Refl :: forall k (a :: k). a :~: a
- newtype Const a (b :: k) = Const {
  - getConst :: a
  }
- class Contravariant (f :: Type -> Type) where
  - contramap :: (a -> b) -> f b -> f a
  - (>$) :: b -> f b -> f a
- class Profunctor p => Choice (p :: Type -> Type -> Type) where
  - left' :: p a b -> p (Either a c) (Either b c)
  - right' :: p a b -> p (Either c a) (Either c b)
- class Profunctor (p :: Type -> Type -> Type) where
  - dimap :: (a -> b) -> (c -> d) -> p b c -> p a d
  - lmap :: (a -> b) -> p b c -> p a c
  - rmap :: (b -> c) -> p a b -> p a c
- sequenceBy :: Traversable t => (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> t (f a) -> f (t a)
- traverseBy :: Traversable t => (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (a -> f b) -> t a -> f (t b)
- foldMapBy :: Foldable t => (r -> r -> r) -> r -> (a -> r) -> t a -> r
- foldBy :: Foldable t => (a -> a -> a) -> a -> t a -> a
- class (Foldable1 t, Traversable t) => Traversable1 (t :: Type -> Type) where
  - traverse1 :: Apply f => (a -> f b) -> t a -> f (t b)
- data Rightmost a
- data Leftmost a
- data Sequenced a m
- data Traversed a f
- newtype Indexed i a b = Indexed {
  - runIndexed :: i -> a -> b
  }
- class Conjoined p => Indexable i p where
  - indexed :: p a b -> i -> a -> b
- class (Choice p, Corepresentable p, Comonad (Corep p), Traversable (Corep p), Strong p, Representable p, Monad (Rep p), MonadFix (Rep p), Distributive (Rep p), Costrong p, ArrowLoop p, ArrowApply p, ArrowChoice p, Closed p) => Conjoined p where
  - distrib :: Functor f => p a b -> p (f a) (f b)
  - conjoined :: (p ~ (->) => q (a -> b) r) -> q (p a b) r -> q (p a b) r
- indexing :: Indexable Int p => ((a -> Indexing f b) -> s -> Indexing f t) -> p a (f b) -> s -> f t
- indexing64 :: Indexable Int64 p => ((a -> Indexing64 f b) -> s -> Indexing64 f t) -> p a (f b) -> s -> f t
- withIndex :: (Indexable i p, Functor f) => p (i, s) (f (j, t)) -> Indexed i s (f t)
- asIndex :: (Indexable i p, Contravariant f, Functor f) => p i (f i) -> Indexed i s (f s)
- type Context' a = Context a a
- data Context a b t = Context (b -> t) a
- type Bazaar1' p a = Bazaar1 p a a
- newtype Bazaar1 p a b t = Bazaar1 {
  - runBazaar1 :: forall f. Apply f => p a (f b) -> f t
  }
- type Bazaar' p a = Bazaar p a a
- newtype Bazaar p a b t = Bazaar {
  - runBazaar :: forall f. Applicative f => p a (f b) -> f t
  }
- class Reversing t where
  - reversing :: t -> t
- data Level i a
- data Magma i t b a
- class (Profunctor p, Bifunctor p) => Reviewable p
- retagged :: (Profunctor p, Bifunctor p) => p a b -> p s b
- class (Applicative f, Distributive f, Traversable f) => Settable f
- type Over' p f s a = Over p f s s a a
- type Over p f s t a b = p a (f b) -> s -> f t
- type IndexedLensLike' i f s a = IndexedLensLike i f s s a a
- type IndexedLensLike i f s t a b = forall p. Indexable i p => p a (f b) -> s -> f t
- type LensLike' f s a = LensLike f s s a a
- type LensLike f s t a b = (a -> f b) -> s -> f t
- type Optical' p q f s a = Optical p q f s s a a
- type Optical p q f s t a b = p a (f b) -> q s (f t)
- type Optic' p f s a = Optic p f s s a a
- type Optic p f s t a b = p a (f b) -> p s (f t)
- type Simple f s a = f s s a a
- type IndexPreservingFold1 s a = forall p f. (Conjoined p, Contravariant f, Apply f) => p a (f a) -> p s (f s)
- type IndexedFold1 i s a = forall p f. (Indexable i p, Contravariant f, Apply f) => p a (f a) -> s -> f s
- type Fold1 s a = forall f. (Contravariant f, Apply f) => (a -> f a) -> s -> f s
- type IndexPreservingFold s a = forall p f. (Conjoined p, Contravariant f, Applicative f) => p a (f a) -> p s (f s)
- type IndexedFold i s a = forall p f. (Indexable i p, Contravariant f, Applicative f) => p a (f a) -> s -> f s
- type Fold s a = forall f. (Contravariant f, Applicative f) => (a -> f a) -> s -> f s
- type IndexPreservingGetter s a = forall p f. (Conjoined p, Contravariant f, Functor f) => p a (f a) -> p s (f s)
- type IndexedGetter i s a = forall p f. (Indexable i p, Contravariant f, Functor f) => p a (f a) -> s -> f s
- type Getter s a = forall f. (Contravariant f, Functor f) => (a -> f a) -> s -> f s
- type As a = Equality' a a
- type Equality' s a = Equality s s a a
- type Equality (s :: k1) (t :: k2) (a :: k1) (b :: k2) = forall k3 (p :: k1 -> k3 -> Type) (f :: k2 -> k3). p a (f b) -> p s (f t)
- type Prism' s a = Prism s s a a
- type Prism s t a b = forall p f. (Choice p, Applicative f) => p a (f b) -> p s (f t)
- type AReview t b = Optic' Tagged Identity t b
- type Review t b = forall p f. (Choice p, Bifunctor p, Settable f) => Optic' p f t b
- type Iso' s a = Iso s s a a
- type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t)
- type IndexPreservingSetter' s a = IndexPreservingSetter s s a a
- type IndexPreservingSetter s t a b = forall p f. (Conjoined p, Settable f) => p a (f b) -> p s (f t)
- type IndexedSetter' i s a = IndexedSetter i s s a a
- type IndexedSetter i s t a b = forall f p. (Indexable i p, Settable f) => p a (f b) -> s -> f t
- type Setter' s a = Setter s s a a
- type Setter s t a b = forall f. Settable f => (a -> f b) -> s -> f t
- type IndexPreservingTraversal1' s a = IndexPreservingTraversal1 s s a a
- type IndexPreservingTraversal1 s t a b = forall p f. (Conjoined p, Apply f) => p a (f b) -> p s (f t)
- type IndexPreservingTraversal' s a = IndexPreservingTraversal s s a a
- type IndexPreservingTraversal s t a b = forall p f. (Conjoined p, Applicative f) => p a (f b) -> p s (f t)
- type IndexedTraversal1' i s a = IndexedTraversal1 i s s a a
- type IndexedTraversal1 i s t a b = forall p f. (Indexable i p, Apply f) => p a (f b) -> s -> f t
- type IndexedTraversal' i s a = IndexedTraversal i s s a a
- type IndexedTraversal i s t a b = forall p f. (Indexable i p, Applicative f) => p a (f b) -> s -> f t
- type Traversal1' s a = Traversal1 s s a a
- type Traversal1 s t a b = forall f. Apply f => (a -> f b) -> s -> f t
- type Traversal' s a = Traversal s s a a
- type Traversal s t a b = forall f. Applicative f => (a -> f b) -> s -> f t
- type IndexPreservingLens' s a = IndexPreservingLens s s a a
- type IndexPreservingLens s t a b = forall p f. (Conjoined p, Functor f) => p a (f b) -> p s (f t)
- type IndexedLens' i s a = IndexedLens i s s a a
- type IndexedLens i s t a b = forall f p. (Indexable i p, Functor f) => p a (f b) -> s -> f t
- type Lens' s a = Lens s s a a
- type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
- type Setting' p s a = Setting p s s a a
- type Setting p s t a b = p a (Identity b) -> s -> Identity t
- type AnIndexedSetter' i s a = AnIndexedSetter i s s a a
- type AnIndexedSetter i s t a b = Indexed i a (Identity b) -> s -> Identity t
- type ASetter' s a = ASetter s s a a
- type ASetter s t a b = (a -> Identity b) -> s -> Identity t
- mapped :: Functor f => Setter (f a) (f b) a b
- lifted :: Monad m => Setter (m a) (m b) a b
- contramapped :: Contravariant f => Setter (f b) (f a) a b
- argument :: Profunctor p => Setter (p b r) (p a r) a b
- setting :: ((a -> b) -> s -> t) -> IndexPreservingSetter s t a b
- sets :: (Profunctor p, Profunctor q, Settable f) => (p a b -> q s t) -> Optical p q f s t a b
- cloneSetter :: ASetter s t a b -> Setter s t a b
- cloneIndexPreservingSetter :: ASetter s t a b -> IndexPreservingSetter s t a b
- cloneIndexedSetter :: AnIndexedSetter i s t a b -> IndexedSetter i s t a b
- over :: ASetter s t a b -> (a -> b) -> s -> t
- set :: ASetter s t a b -> b -> s -> t
- set' :: ASetter' s a -> a -> s -> s
- assign :: MonadState s m => ASetter s s a b -> b -> m ()
- modifying :: MonadState s m => ASetter s s a b -> (a -> b) -> m ()
- scribe :: (MonadWriter t m, Monoid s) => ASetter s t a b -> b -> m ()
- passing :: MonadWriter w m => Setter w w u v -> m (a, u -> v) -> m a
- ipassing :: MonadWriter w m => IndexedSetter i w w u v -> m (a, i -> u -> v) -> m a
- censoring :: MonadWriter w m => Setter w w u v -> (u -> v) -> m a -> m a
- icensoring :: MonadWriter w m => IndexedSetter i w w u v -> (i -> u -> v) -> m a -> m a
- locally :: MonadReader s m => ASetter s s a b -> (a -> b) -> m r -> m r
- ilocally :: MonadReader s m => AnIndexedSetter i s s a b -> (i -> a -> b) -> m r -> m r
- iover :: AnIndexedSetter i s t a b -> (i -> a -> b) -> s -> t
- iset :: AnIndexedSetter i s t a b -> (i -> b) -> s -> t
- isets :: ((i -> a -> b) -> s -> t) -> IndexedSetter i s t a b
- imodifying :: MonadState s m => AnIndexedSetter i s s a b -> (i -> a -> b) -> m ()
- assignA :: Arrow p => ASetter s t a b -> p s b -> p s t
- mapOf :: ASetter s t a b -> (a -> b) -> s -> t
- imapOf :: AnIndexedSetter i s t a b -> (i -> a -> b) -> s -> t
- type AnIndexedLens' i s a = AnIndexedLens i s s a a
- type AnIndexedLens i s t a b = Optical (Indexed i) (->) (Pretext (Indexed i) a b) s t a b
- type ALens' s a = ALens s s a a
- type ALens s t a b = LensLike (Pretext (->) a b) s t a b
- lens :: (s -> a) -> (s -> b -> t) -> Lens s t a b
- withLens :: forall s t a b rep (r :: TYPE rep). ALens s t a b -> ((s -> a) -> (s -> b -> t) -> r) -> r
- iplens :: (s -> a) -> (s -> b -> t) -> IndexPreservingLens s t a b
- ilens :: (s -> (i, a)) -> (s -> b -> t) -> IndexedLens i s t a b
- inside :: Corepresentable p => ALens s t a b -> Lens (p e s) (p e t) (p e a) (p e b)
- choosing :: Functor f => LensLike f s t a b -> LensLike f s' t' a b -> LensLike f (Either s s') (Either t t') a b
- chosen :: IndexPreservingLens (Either a a) (Either b b) a b
- alongside :: LensLike (AlongsideLeft f b') s t a b -> LensLike (AlongsideRight f t) s' t' a' b' -> LensLike f (s, s') (t, t') (a, a') (b, b')
- locus :: IndexedComonadStore p => Lens (p a c s) (p b c s) a b
- cloneLens :: ALens s t a b -> Lens s t a b
- cloneIndexPreservingLens :: ALens s t a b -> IndexPreservingLens s t a b
- cloneIndexedLens :: AnIndexedLens i s t a b -> IndexedLens i s t a b
- overA :: Arrow ar => LensLike (Context a b) s t a b -> ar a b -> ar s t
- storing :: ALens s t a b -> b -> s -> t
- devoid :: Over p f Void Void a b
- united :: Lens' a ()
- head1 :: Traversable1 t => Lens' (t a) a
- last1 :: Traversable1 t => Lens' (t a) a
- fusing :: Functor f => LensLike (Yoneda f) s t a b -> LensLike f s t a b
- class Field19 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _19 :: Lens s t a b
- class Field18 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _18 :: Lens s t a b
- class Field17 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _17 :: Lens s t a b
- class Field16 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _16 :: Lens s t a b
- class Field15 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _15 :: Lens s t a b
- class Field14 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _14 :: Lens s t a b
- class Field13 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _13 :: Lens s t a b
- class Field12 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _12 :: Lens s t a b
- class Field11 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _11 :: Lens s t a b
- class Field10 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _10 :: Lens s t a b
- class Field9 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _9 :: Lens s t a b
- class Field8 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _8 :: Lens s t a b
- class Field7 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _7 :: Lens s t a b
- class Field6 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _6 :: Lens s t a b
- class Field5 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _5 :: Lens s t a b
- class Field4 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _4 :: Lens s t a b
- class Field3 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _3 :: Lens s t a b
- class Field2 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _2 :: Lens s t a b
- class Field1 s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _1 :: Lens s t a b
- _1' :: Field1 s t a b => Lens s t a b
- _2' :: Field2 s t a b => Lens s t a b
- _3' :: Field3 s t a b => Lens s t a b
- _4' :: Field4 s t a b => Lens s t a b
- _5' :: Field5 s t a b => Lens s t a b
- _6' :: Field6 s t a b => Lens s t a b
- _7' :: Field7 s t a b => Lens s t a b
- _8' :: Field8 s t a b => Lens s t a b
- _9' :: Field9 s t a b => Lens s t a b
- _10' :: Field10 s t a b => Lens s t a b
- _11' :: Field11 s t a b => Lens s t a b
- _12' :: Field12 s t a b => Lens s t a b
- _13' :: Field13 s t a b => Lens s t a b
- _14' :: Field14 s t a b => Lens s t a b
- _15' :: Field15 s t a b => Lens s t a b
- _16' :: Field16 s t a b => Lens s t a b
- _17' :: Field17 s t a b => Lens s t a b
- _18' :: Field18 s t a b => Lens s t a b
- _19' :: Field19 s t a b => Lens s t a b
- type Accessing p m s a = p a (Const m a) -> s -> Const m s
- type IndexedGetting i m s a = Indexed i a (Const m a) -> s -> Const m s
- type Getting r s a = (a -> Const r a) -> s -> Const r s
- to :: (Profunctor p, Contravariant f) => (s -> a) -> Optic' p f s a
- ito :: (Indexable i p, Contravariant f) => (s -> (i, a)) -> Over' p f s a
- like :: (Profunctor p, Contravariant f, Functor f) => a -> Optic' p f s a
- ilike :: (Indexable i p, Contravariant f, Functor f) => i -> a -> Over' p f s a
- view :: MonadReader s m => Getting a s a -> m a
- views :: MonadReader s m => LensLike' (Const r) s a -> (a -> r) -> m r
- use :: MonadState s m => Getting a s a -> m a
- uses :: MonadState s m => LensLike' (Const r) s a -> (a -> r) -> m r
- listening :: MonadWriter w m => Getting u w u -> m a -> m (a, u)
- ilistening :: MonadWriter w m => IndexedGetting i (i, u) w u -> m a -> m (a, (i, u))
- listenings :: MonadWriter w m => Getting v w u -> (u -> v) -> m a -> m (a, v)
- ilistenings :: MonadWriter w m => IndexedGetting i v w u -> (i -> u -> v) -> m a -> m (a, v)
- iview :: MonadReader s m => IndexedGetting i (i, a) s a -> m (i, a)
- iviews :: MonadReader s m => IndexedGetting i r s a -> (i -> a -> r) -> m r
- iuse :: MonadState s m => IndexedGetting i (i, a) s a -> m (i, a)
- iuses :: MonadState s m => IndexedGetting i r s a -> (i -> a -> r) -> m r
- getting :: (Profunctor p, Profunctor q, Functor f, Contravariant f) => Optical p q f s t a b -> Optical' p q f s a
- unto :: (Profunctor p, Bifunctor p, Functor f) => (b -> t) -> Optic p f s t a b
- un :: (Profunctor p, Bifunctor p, Functor f) => Getting a s a -> Optic' p f a s
- re :: AReview t b -> Getter b t
- review :: MonadReader b m => AReview t b -> m t
- reviews :: MonadReader b m => AReview t b -> (t -> r) -> m r
- reuse :: MonadState b m => AReview t b -> m t
- reuses :: MonadState b m => AReview t b -> (t -> r) -> m r
- type APrism' s a = APrism s s a a
- type APrism s t a b = Market a b a (Identity b) -> Market a b s (Identity t)
- withPrism :: APrism s t a b -> ((b -> t) -> (s -> Either t a) -> r) -> r
- clonePrism :: APrism s t a b -> Prism s t a b
- prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
- prism' :: (b -> s) -> (s -> Maybe a) -> Prism s s a b
- outside :: Representable p => APrism s t a b -> Lens (p t r) (p s r) (p b r) (p a r)
- without :: APrism s t a b -> APrism u v c d -> Prism (Either s u) (Either t v) (Either a c) (Either b d)
- aside :: APrism s t a b -> Prism (e, s) (e, t) (e, a) (e, b)
- below :: Traversable f => APrism' s a -> Prism' (f s) (f a)
- isn't :: APrism s t a b -> s -> Bool
- matching :: APrism s t a b -> s -> Either t a
- _Left :: Prism (Either a c) (Either b c) a b
- _Right :: Prism (Either c a) (Either c b) a b
- _Just :: Prism (Maybe a) (Maybe b) a b
- _Nothing :: Prism' (Maybe a) ()
- _Void :: Prism s s a Void
- only :: Eq a => a -> Prism' a ()
- nearly :: a -> (a -> Bool) -> Prism' a ()
- _Show :: (Read a, Show a) => Prism' String a
- folding :: Foldable f => (s -> f a) -> Fold s a
- ifolding :: (Foldable f, Indexable i p, Contravariant g, Applicative g) => (s -> f (i, a)) -> Over p g s t a b
- foldring :: (Contravariant f, Applicative f) => ((a -> f a -> f a) -> f a -> s -> f a) -> LensLike f s t a b
- ifoldring :: (Indexable i p, Contravariant f, Applicative f) => ((i -> a -> f a -> f a) -> f a -> s -> f a) -> Over p f s t a b
- folded :: Foldable f => IndexedFold Int (f a) a
- folded64 :: Foldable f => IndexedFold Int64 (f a) a
- repeated :: Apply f => LensLike' f a a
- replicated :: Int -> Fold a a
- cycled :: Apply f => LensLike f s t a b -> LensLike f s t a b
- unfolded :: (b -> Maybe (a, b)) -> Fold b a
- iterated :: Apply f => (a -> a) -> LensLike' f a a
- filtered :: (Choice p, Applicative f) => (a -> Bool) -> Optic' p f a a
- filteredBy :: (Indexable i p, Applicative f) => Getting (First i) a i -> p a (f a) -> a -> f a
- takingWhile :: (Conjoined p, Applicative f) => (a -> Bool) -> Over p (TakingWhile p f a a) s t a a -> Over p f s t a a
- droppingWhile :: (Conjoined p, Profunctor q, Applicative f) => (a -> Bool) -> Optical p q (Compose (State Bool) f) s t a a -> Optical p q f s t a a
- worded :: Applicative f => IndexedLensLike' Int f String String
- lined :: Applicative f => IndexedLensLike' Int f String String
- foldMapOf :: Getting r s a -> (a -> r) -> s -> r
- foldOf :: Getting a s a -> s -> a
- foldrOf :: Getting (Endo r) s a -> (a -> r -> r) -> r -> s -> r
- foldlOf :: Getting (Dual (Endo r)) s a -> (r -> a -> r) -> r -> s -> r
- toListOf :: Getting (Endo [a]) s a -> s -> [a]
- toNonEmptyOf :: Getting (NonEmptyDList a) s a -> s -> NonEmpty a
- andOf :: Getting All s Bool -> s -> Bool
- orOf :: Getting Any s Bool -> s -> Bool
- anyOf :: Getting Any s a -> (a -> Bool) -> s -> Bool
- allOf :: Getting All s a -> (a -> Bool) -> s -> Bool
- noneOf :: Getting Any s a -> (a -> Bool) -> s -> Bool
- productOf :: Num a => Getting (Endo (Endo a)) s a -> s -> a
- sumOf :: Num a => Getting (Endo (Endo a)) s a -> s -> a
- traverseOf_ :: Functor f => Getting (Traversed r f) s a -> (a -> f r) -> s -> f ()
- forOf_ :: Functor f => Getting (Traversed r f) s a -> s -> (a -> f r) -> f ()
- sequenceAOf_ :: Functor f => Getting (Traversed a f) s (f a) -> s -> f ()
- traverse1Of_ :: Functor f => Getting (TraversedF r f) s a -> (a -> f r) -> s -> f ()
- for1Of_ :: Functor f => Getting (TraversedF r f) s a -> s -> (a -> f r) -> f ()
- sequence1Of_ :: Functor f => Getting (TraversedF a f) s (f a) -> s -> f ()
- mapMOf_ :: Monad m => Getting (Sequenced r m) s a -> (a -> m r) -> s -> m ()
- forMOf_ :: Monad m => Getting (Sequenced r m) s a -> s -> (a -> m r) -> m ()
- sequenceOf_ :: Monad m => Getting (Sequenced a m) s (m a) -> s -> m ()
- asumOf :: Alternative f => Getting (Endo (f a)) s (f a) -> s -> f a
- msumOf :: MonadPlus m => Getting (Endo (m a)) s (m a) -> s -> m a
- elemOf :: Eq a => Getting Any s a -> a -> s -> Bool
- notElemOf :: Eq a => Getting All s a -> a -> s -> Bool
- concatMapOf :: Getting [r] s a -> (a -> [r]) -> s -> [r]
- concatOf :: Getting [r] s [r] -> s -> [r]
- lengthOf :: Getting (Endo (Endo Int)) s a -> s -> Int
- firstOf :: Getting (Leftmost a) s a -> s -> Maybe a
- first1Of :: Getting (First a) s a -> s -> a
- lastOf :: Getting (Rightmost a) s a -> s -> Maybe a
- last1Of :: Getting (Last a) s a -> s -> a
- nullOf :: Getting All s a -> s -> Bool
- notNullOf :: Getting Any s a -> s -> Bool
- maximumOf :: Ord a => Getting (Endo (Endo (Maybe a))) s a -> s -> Maybe a
- maximum1Of :: Ord a => Getting (Max a) s a -> s -> a
- minimumOf :: Ord a => Getting (Endo (Endo (Maybe a))) s a -> s -> Maybe a
- minimum1Of :: Ord a => Getting (Min a) s a -> s -> a
- maximumByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a
- minimumByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a
- findOf :: Getting (Endo (Maybe a)) s a -> (a -> Bool) -> s -> Maybe a
- findMOf :: Monad m => Getting (Endo (m (Maybe a))) s a -> (a -> m Bool) -> s -> m (Maybe a)
- lookupOf :: Eq k => Getting (Endo (Maybe v)) s (k, v) -> k -> s -> Maybe v
- foldr1Of :: HasCallStack => Getting (Endo (Maybe a)) s a -> (a -> a -> a) -> s -> a
- foldl1Of :: HasCallStack => Getting (Dual (Endo (Maybe a))) s a -> (a -> a -> a) -> s -> a
- foldrOf' :: Getting (Dual (Endo (Endo r))) s a -> (a -> r -> r) -> r -> s -> r
- foldlOf' :: Getting (Endo (Endo r)) s a -> (r -> a -> r) -> r -> s -> r
- foldr1Of' :: HasCallStack => Getting (Dual (Endo (Endo (Maybe a)))) s a -> (a -> a -> a) -> s -> a
- foldl1Of' :: HasCallStack => Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> a) -> s -> a
- foldrMOf :: Monad m => Getting (Dual (Endo (r -> m r))) s a -> (a -> r -> m r) -> r -> s -> m r
- foldlMOf :: Monad m => Getting (Endo (r -> m r)) s a -> (r -> a -> m r) -> r -> s -> m r
- has :: Getting Any s a -> s -> Bool
- hasn't :: Getting All s a -> s -> Bool
- pre :: Getting (First a) s a -> IndexPreservingGetter s (Maybe a)
- ipre :: IndexedGetting i (First (i, a)) s a -> IndexPreservingGetter s (Maybe (i, a))
- preview :: MonadReader s m => Getting (First a) s a -> m (Maybe a)
- ipreview :: MonadReader s m => IndexedGetting i (First (i, a)) s a -> m (Maybe (i, a))
- previews :: MonadReader s m => Getting (First r) s a -> (a -> r) -> m (Maybe r)
- ipreviews :: MonadReader s m => IndexedGetting i (First r) s a -> (i -> a -> r) -> m (Maybe r)
- preuse :: MonadState s m => Getting (First a) s a -> m (Maybe a)
- ipreuse :: MonadState s m => IndexedGetting i (First (i, a)) s a -> m (Maybe (i, a))
- preuses :: MonadState s m => Getting (First r) s a -> (a -> r) -> m (Maybe r)
- ipreuses :: MonadState s m => IndexedGetting i (First r) s a -> (i -> a -> r) -> m (Maybe r)
- backwards :: (Profunctor p, Profunctor q) => Optical p q (Backwards f) s t a b -> Optical p q f s t a b
- ifoldMapOf :: IndexedGetting i m s a -> (i -> a -> m) -> s -> m
- ifoldrOf :: IndexedGetting i (Endo r) s a -> (i -> a -> r -> r) -> r -> s -> r
- ifoldlOf :: IndexedGetting i (Dual (Endo r)) s a -> (i -> r -> a -> r) -> r -> s -> r
- ianyOf :: IndexedGetting i Any s a -> (i -> a -> Bool) -> s -> Bool
- iallOf :: IndexedGetting i All s a -> (i -> a -> Bool) -> s -> Bool
- inoneOf :: IndexedGetting i Any s a -> (i -> a -> Bool) -> s -> Bool
- itraverseOf_ :: Functor f => IndexedGetting i (Traversed r f) s a -> (i -> a -> f r) -> s -> f ()
- iforOf_ :: Functor f => IndexedGetting i (Traversed r f) s a -> s -> (i -> a -> f r) -> f ()
- imapMOf_ :: Monad m => IndexedGetting i (Sequenced r m) s a -> (i -> a -> m r) -> s -> m ()
- iforMOf_ :: Monad m => IndexedGetting i (Sequenced r m) s a -> s -> (i -> a -> m r) -> m ()
- iconcatMapOf :: IndexedGetting i [r] s a -> (i -> a -> [r]) -> s -> [r]
- ifindOf :: IndexedGetting i (Endo (Maybe a)) s a -> (i -> a -> Bool) -> s -> Maybe a
- ifindMOf :: Monad m => IndexedGetting i (Endo (m (Maybe a))) s a -> (i -> a -> m Bool) -> s -> m (Maybe a)
- ifoldrOf' :: IndexedGetting i (Dual (Endo (r -> r))) s a -> (i -> a -> r -> r) -> r -> s -> r
- ifoldlOf' :: IndexedGetting i (Endo (r -> r)) s a -> (i -> r -> a -> r) -> r -> s -> r
- ifoldrMOf :: Monad m => IndexedGetting i (Dual (Endo (r -> m r))) s a -> (i -> a -> r -> m r) -> r -> s -> m r
- ifoldlMOf :: Monad m => IndexedGetting i (Endo (r -> m r)) s a -> (i -> r -> a -> m r) -> r -> s -> m r
- itoListOf :: IndexedGetting i (Endo [(i, a)]) s a -> s -> [(i, a)]
- elemIndexOf :: Eq a => IndexedGetting i (First i) s a -> a -> s -> Maybe i
- elemIndicesOf :: Eq a => IndexedGetting i (Endo [i]) s a -> a -> s -> [i]
- findIndexOf :: IndexedGetting i (First i) s a -> (a -> Bool) -> s -> Maybe i
- findIndicesOf :: IndexedGetting i (Endo [i]) s a -> (a -> Bool) -> s -> [i]
- ifiltered :: (Indexable i p, Applicative f) => (i -> a -> Bool) -> Optical' p (Indexed i) f a a
- itakingWhile :: (Indexable i p, Profunctor q, Contravariant f, Applicative f) => (i -> a -> Bool) -> Optical' (Indexed i) q (Const (Endo (f s))) s a -> Optical' p q f s a
- idroppingWhile :: (Indexable i p, Profunctor q, Applicative f) => (i -> a -> Bool) -> Optical (Indexed i) q (Compose (State Bool) f) s t a a -> Optical p q f s t a a
- foldByOf :: Fold s a -> (a -> a -> a) -> a -> s -> a
- foldMapByOf :: Fold s a -> (r -> r -> r) -> r -> (a -> r) -> s -> r
- class Ord k => TraverseMax k m | m -> k where
  - traverseMax :: IndexedTraversal' k (m v) v
- class Ord k => TraverseMin k m | m -> k where
  - traverseMin :: IndexedTraversal' k (m v) v
- type Traversing1' p f s a = Traversing1 p f s s a a
- type Traversing' p f s a = Traversing p f s s a a
- type Traversing1 p f s t a b = Over p (BazaarT1 p f a b) s t a b
- type Traversing p f s t a b = Over p (BazaarT p f a b) s t a b
- type AnIndexedTraversal1' i s a = AnIndexedTraversal1 i s s a a
- type AnIndexedTraversal' i s a = AnIndexedTraversal i s s a a
- type AnIndexedTraversal1 i s t a b = Over (Indexed i) (Bazaar1 (Indexed i) a b) s t a b
- type AnIndexedTraversal i s t a b = Over (Indexed i) (Bazaar (Indexed i) a b) s t a b
- type ATraversal1' s a = ATraversal1 s s a a
- type ATraversal1 s t a b = LensLike (Bazaar1 (->) a b) s t a b
- type ATraversal' s a = ATraversal s s a a
- type ATraversal s t a b = LensLike (Bazaar (->) a b) s t a b
- traverseOf :: LensLike f s t a b -> (a -> f b) -> s -> f t
- forOf :: LensLike f s t a b -> s -> (a -> f b) -> f t
- sequenceAOf :: LensLike f s t (f b) b -> s -> f t
- mapMOf :: LensLike (WrappedMonad m) s t a b -> (a -> m b) -> s -> m t
- forMOf :: LensLike (WrappedMonad m) s t a b -> s -> (a -> m b) -> m t
- sequenceOf :: LensLike (WrappedMonad m) s t (m b) b -> s -> m t
- transposeOf :: LensLike ZipList s t [a] a -> s -> [t]
- mapAccumROf :: LensLike (Backwards (State acc)) s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
- mapAccumLOf :: LensLike (State acc) s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
- scanr1Of :: LensLike (Backwards (State (Maybe a))) s t a a -> (a -> a -> a) -> s -> t
- scanl1Of :: LensLike (State (Maybe a)) s t a a -> (a -> a -> a) -> s -> t
- loci :: Traversal (Bazaar (->) a c s) (Bazaar (->) b c s) a b
- iloci :: IndexedTraversal i (Bazaar (Indexed i) a c s) (Bazaar (Indexed i) b c s) a b
- partsOf :: Functor f => Traversing (->) f s t a a -> LensLike f s t [a] [a]
- ipartsOf :: forall i p f s t a. (Indexable [i] p, Functor f) => Traversing (Indexed i) f s t a a -> Over p f s t [a] [a]
- partsOf' :: ATraversal s t a a -> Lens s t [a] [a]
- ipartsOf' :: forall i p f s t a. (Indexable [i] p, Functor f) => Over (Indexed i) (Bazaar' (Indexed i) a) s t a a -> Over p f s t [a] [a]
- unsafePartsOf :: Functor f => Traversing (->) f s t a b -> LensLike f s t [a] [b]
- iunsafePartsOf :: forall i p f s t a b. (Indexable [i] p, Functor f) => Traversing (Indexed i) f s t a b -> Over p f s t [a] [b]
- unsafePartsOf' :: ATraversal s t a b -> Lens s t [a] [b]
- iunsafePartsOf' :: forall i s t a b. Over (Indexed i) (Bazaar (Indexed i) a b) s t a b -> IndexedLens [i] s t [a] [b]
- singular :: (HasCallStack, Conjoined p, Functor f) => Traversing p f s t a a -> Over p f s t a a
- unsafeSingular :: (HasCallStack, Conjoined p, Functor f) => Traversing p f s t a b -> Over p f s t a b
- holesOf :: Conjoined p => Over p (Bazaar p a a) s t a a -> s -> [Pretext p a a t]
- holes1Of :: Conjoined p => Over p (Bazaar1 p a a) s t a a -> s -> NonEmpty (Pretext p a a t)
- both :: Bitraversable r => Traversal (r a a) (r b b) a b
- both1 :: Bitraversable1 r => Traversal1 (r a a) (r b b) a b
- beside :: (Representable q, Applicative (Rep q), Applicative f, Bitraversable r) => Optical p q f s t a b -> Optical p q f s' t' a b -> Optical p q f (r s s') (r t t') a b
- taking :: (Conjoined p, Applicative f) => Int -> Traversing p f s t a a -> Over p f s t a a
- dropping :: (Conjoined p, Applicative f) => Int -> Over p (Indexing f) s t a a -> Over p f s t a a
- cloneTraversal :: ATraversal s t a b -> Traversal s t a b
- cloneIndexPreservingTraversal :: ATraversal s t a b -> IndexPreservingTraversal s t a b
- cloneIndexedTraversal :: AnIndexedTraversal i s t a b -> IndexedTraversal i s t a b
- cloneTraversal1 :: ATraversal1 s t a b -> Traversal1 s t a b
- cloneIndexPreservingTraversal1 :: ATraversal1 s t a b -> IndexPreservingTraversal1 s t a b
- cloneIndexedTraversal1 :: AnIndexedTraversal1 i s t a b -> IndexedTraversal1 i s t a b
- itraverseOf :: (Indexed i a (f b) -> s -> f t) -> (i -> a -> f b) -> s -> f t
- iforOf :: (Indexed i a (f b) -> s -> f t) -> s -> (i -> a -> f b) -> f t
- imapMOf :: Over (Indexed i) (WrappedMonad m) s t a b -> (i -> a -> m b) -> s -> m t
- iforMOf :: (Indexed i a (WrappedMonad m b) -> s -> WrappedMonad m t) -> s -> (i -> a -> m b) -> m t
- imapAccumROf :: Over (Indexed i) (Backwards (State acc)) s t a b -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
- imapAccumLOf :: Over (Indexed i) (State acc) s t a b -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
- traversed :: Traversable f => IndexedTraversal Int (f a) (f b) a b
- traversed1 :: Traversable1 f => IndexedTraversal1 Int (f a) (f b) a b
- traversed64 :: Traversable f => IndexedTraversal Int64 (f a) (f b) a b
- ignored :: Applicative f => pafb -> s -> f s
- elementOf :: Applicative f => LensLike (Indexing f) s t a a -> Int -> IndexedLensLike Int f s t a a
- element :: Traversable t => Int -> IndexedTraversal' Int (t a) a
- elementsOf :: Applicative f => LensLike (Indexing f) s t a a -> (Int -> Bool) -> IndexedLensLike Int f s t a a
- elements :: Traversable t => (Int -> Bool) -> IndexedTraversal' Int (t a) a
- failover :: Alternative m => LensLike ((,) Any) s t a b -> (a -> b) -> s -> m t
- ifailover :: Alternative m => Over (Indexed i) ((,) Any) s t a b -> (i -> a -> b) -> s -> m t
- failing :: (Conjoined p, Applicative f) => Traversing p f s t a b -> Over p f s t a b -> Over p f s t a b
- deepOf :: (Conjoined p, Applicative f) => LensLike f s t s t -> Traversing p f s t a b -> Over p f s t a b
- confusing :: Applicative f => LensLike (Curried (Yoneda f) (Yoneda f)) s t a b -> LensLike f s t a b
- traverseByOf :: Traversal s t a b -> (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (a -> f b) -> s -> f t
- sequenceByOf :: Traversal s t (f b) b -> (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> s -> f t
- levels :: Applicative f => Traversing (->) f s t a b -> IndexedLensLike Int f s t (Level () a) (Level () b)
- ilevels :: Applicative f => Traversing (Indexed i) f s t a b -> IndexedLensLike Int f s t (Level i a) (Level j b)
- type ReifiedPrism' s a = ReifiedPrism s s a a
- newtype ReifiedPrism s t a b = Prism {
  - runPrism :: Prism s t a b
  }
- type ReifiedIso' s a = ReifiedIso s s a a
- newtype ReifiedIso s t a b = Iso {
  - runIso :: Iso s t a b
  }
- type ReifiedIndexedSetter' i s a = ReifiedIndexedSetter i s s a a
- newtype ReifiedIndexedSetter i s t a b = IndexedSetter {
  - runIndexedSetter :: IndexedSetter i s t a b
  }
- type ReifiedSetter' s a = ReifiedSetter s s a a
- newtype ReifiedSetter s t a b = Setter {
  - runSetter :: Setter s t a b
  }
- newtype ReifiedIndexedFold i s a = IndexedFold {
  - runIndexedFold :: IndexedFold i s a
  }
- newtype ReifiedFold s a = Fold {
  - runFold :: Fold s a
  }
- newtype ReifiedIndexedGetter i s a = IndexedGetter {
  - runIndexedGetter :: IndexedGetter i s a
  }
- newtype ReifiedGetter s a = Getter {
  - runGetter :: Getter s a
  }
- type ReifiedTraversal' s a = ReifiedTraversal s s a a
- newtype ReifiedTraversal s t a b = Traversal {
  - runTraversal :: Traversal s t a b
  }
- type ReifiedIndexedTraversal' i s a = ReifiedIndexedTraversal i s s a a
- newtype ReifiedIndexedTraversal i s t a b = IndexedTraversal {
  - runIndexedTraversal :: IndexedTraversal i s t a b
  }
- type ReifiedIndexedLens' i s a = ReifiedIndexedLens i s s a a
- newtype ReifiedIndexedLens i s t a b = IndexedLens {
  - runIndexedLens :: IndexedLens i s t a b
  }
- type ReifiedLens' s a = ReifiedLens s s a a
- newtype ReifiedLens s t a b = Lens {
  - runLens :: Lens s t a b
  }
- class (FunctorWithIndex i t, FoldableWithIndex i t, Traversable t) => TraversableWithIndex i t | t -> i where
  - itraverse :: Applicative f => (i -> a -> f b) -> t a -> f (t b)
  - itraversed :: IndexedTraversal i (t a) (t b) a b
- class Foldable f => FoldableWithIndex i f | f -> i where
  - ifoldMap :: Monoid m => (i -> a -> m) -> f a -> m
  - ifolded :: IndexedFold i (f a) a
  - ifoldr :: (i -> a -> b -> b) -> b -> f a -> b
  - ifoldl :: (i -> b -> a -> b) -> b -> f a -> b
  - ifoldr' :: (i -> a -> b -> b) -> b -> f a -> b
  - ifoldl' :: (i -> b -> a -> b) -> b -> f a -> b
- class Functor f => FunctorWithIndex i f | f -> i where
  - imap :: (i -> a -> b) -> f a -> f b
  - imapped :: IndexedSetter i (f a) (f b) a b
- selfIndex :: Indexable a p => p a fb -> a -> fb
- reindexed :: Indexable j p => (i -> j) -> (Indexed i a b -> r) -> p a b -> r
- icompose :: Indexable p c => (i -> j -> p) -> (Indexed i s t -> r) -> (Indexed j a b -> s -> t) -> c a b -> r
- indices :: (Indexable i p, Applicative f) => (i -> Bool) -> Optical' p (Indexed i) f a a
- index :: (Indexable i p, Eq i, Applicative f) => i -> Optical' p (Indexed i) f a a
- iany :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool
- iall :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool
- inone :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool
- none :: Foldable f => (a -> Bool) -> f a -> Bool
- itraverse_ :: (FoldableWithIndex i t, Applicative f) => (i -> a -> f b) -> t a -> f ()
- ifor_ :: (FoldableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f ()
- imapM_ :: (FoldableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m ()
- iforM_ :: (FoldableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m ()
- iconcatMap :: FoldableWithIndex i f => (i -> a -> [b]) -> f a -> [b]
- ifind :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Maybe (i, a)
- ifoldrM :: (FoldableWithIndex i f, Monad m) => (i -> a -> b -> m b) -> b -> f a -> m b
- ifoldlM :: (FoldableWithIndex i f, Monad m) => (i -> b -> a -> m b) -> b -> f a -> m b
- itoList :: FoldableWithIndex i f => f a -> [(i, a)]
- ifor :: (TraversableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f (t b)
- imapM :: (TraversableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m (t b)
- iforM :: (TraversableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m (t b)
- imapAccumR :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b)
- imapAccumL :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b)
- ifoldMapBy :: FoldableWithIndex i t => (r -> r -> r) -> r -> (i -> a -> r) -> t a -> r
- ifoldMapByOf :: IndexedFold i t a -> (r -> r -> r) -> r -> (i -> a -> r) -> t -> r
- itraverseBy :: TraversableWithIndex i t => (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (i -> a -> f b) -> t a -> f (t b)
- itraverseByOf :: IndexedTraversal i s t a b -> (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (i -> a -> f b) -> s -> f t
- type AnEquality' s a = AnEquality s s a a
- type AnEquality (s :: k1) (t :: k2) (a :: k1) (b :: k2) = Identical a (Proxy b) a (Proxy b) -> Identical a (Proxy b) s (Proxy t)
- data Identical a b s t where
  - Identical :: Identical a b a b
- runEq :: AnEquality s t a b -> Identical s t a b
- substEq :: forall s t a b rep (r :: TYPE rep). AnEquality s t a b -> ((s ~ a, t ~ b) => r) -> r
- mapEq :: forall k1 k2 (s :: k1) (t :: k2) (a :: k1) (b :: k2) (f :: k1 -> Type). AnEquality s t a b -> f s -> f a
- fromEq :: AnEquality s t a b -> Equality b a t s
- simply :: forall p f s a rep (r :: TYPE rep). (Optic' p f s a -> r) -> Optic' p f s a -> r
- simple :: Equality' a a
- cloneEquality :: AnEquality s t a b -> Equality s t a b
- equality :: (s :~: a) -> (b :~: t) -> Equality s t a b
- equality' :: (a :~: b) -> Equality' a b
- overEquality :: AnEquality s t a b -> p a b -> p s t
- underEquality :: AnEquality s t a b -> p t s -> p b a
- fromLeibniz :: (Identical a b a b -> Identical a b s t) -> Equality s t a b
- fromLeibniz' :: ((s :~: s) -> s :~: a) -> Equality' s a
- withEquality :: forall s t a b rep (r :: TYPE rep). AnEquality s t a b -> ((s :~: a) -> (b :~: t) -> r) -> r
- class Strict lazy strict | lazy -> strict, strict -> lazy where
  - strict :: Iso' lazy strict
- class Bifunctor p => Swapped p where
  - swapped :: Iso (p a b) (p c d) (p b a) (p d c)
- type AnIso' s a = AnIso s s a a
- type AnIso s t a b = Exchange a b a (Identity b) -> Exchange a b s (Identity t)
- pattern List :: IsList l => [Item l] -> l
- pattern Reversed :: Reversing t => t -> t
- pattern Swapped :: forall p c d. Swapped p => p d c -> p c d
- pattern Lazy :: Strict t s => t -> s
- pattern Strict :: Strict s t => t -> s
- iso :: (s -> a) -> (b -> t) -> Iso s t a b
- from :: AnIso s t a b -> Iso b a t s
- withIso :: forall s t a b rep (r :: TYPE rep). AnIso s t a b -> ((s -> a) -> (b -> t) -> r) -> r
- cloneIso :: AnIso s t a b -> Iso s t a b
- au :: Functor f => AnIso s t a b -> ((b -> t) -> f s) -> f a
- auf :: (Functor f, Functor g) => AnIso s t a b -> (f t -> g s) -> f b -> g a
- xplat :: Optic (Costar ((->) s)) g s t a b -> ((s -> a) -> g b) -> g t
- xplatf :: Optic (Costar f) g s t a b -> (f a -> g b) -> f s -> g t
- under :: AnIso s t a b -> (t -> s) -> b -> a
- enum :: Enum a => Iso' Int a
- mapping :: (Functor f, Functor g) => AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
- non :: Eq a => a -> Iso' (Maybe a) a
- non' :: APrism' a () -> Iso' (Maybe a) a
- anon :: a -> (a -> Bool) -> Iso' (Maybe a) a
- curried :: Iso ((a, b) -> c) ((d, e) -> f) (a -> b -> c) (d -> e -> f)
- uncurried :: Iso (a -> b -> c) (d -> e -> f) ((a, b) -> c) ((d, e) -> f)
- flipped :: Iso (a -> b -> c) (a' -> b' -> c') (b -> a -> c) (b' -> a' -> c')
- lazy :: Strict lazy strict => Iso' strict lazy
- reversed :: Reversing a => Iso' a a
- involuted :: (a -> a) -> Iso' a a
- magma :: LensLike (Mafic a b) s t a b -> Iso s u (Magma Int t b a) (Magma j u c c)
- imagma :: Over (Indexed i) (Molten i a b) s t a b -> Iso s t' (Magma i t b a) (Magma j t' c c)
- contramapping :: Contravariant f => AnIso s t a b -> Iso (f a) (f b) (f s) (f t)
- dimapping :: (Profunctor p, Profunctor q) => AnIso s t a b -> AnIso s' t' a' b' -> Iso (p a s') (q b t') (p s a') (q t b')
- lmapping :: (Profunctor p, Profunctor q) => AnIso s t a b -> Iso (p a x) (q b y) (p s x) (q t y)
- rmapping :: (Profunctor p, Profunctor q) => AnIso s t a b -> Iso (p x s) (q y t) (p x a) (q y b)
- bimapping :: (Bifunctor f, Bifunctor g) => AnIso s t a b -> AnIso s' t' a' b' -> Iso (f s s') (g t t') (f a a') (g b b')
- firsting :: (Bifunctor f, Bifunctor g) => AnIso s t a b -> Iso (f s x) (g t y) (f a x) (g b y)
- seconding :: (Bifunctor f, Bifunctor g) => AnIso s t a b -> Iso (f x s) (g y t) (f x a) (g y b)
- coerced :: forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
- class AsEmpty a where
  - _Empty :: Prism' a ()
- pattern Empty :: AsEmpty s => s
- class Snoc s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _Snoc :: Prism s t (s, a) (t, b)
- class Cons s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - _Cons :: Prism s t (a, s) (b, t)
- cons :: Cons s s a a => a -> s -> s
- uncons :: Cons s s a a => s -> Maybe (a, s)
- _head :: Cons s s a a => Traversal' s a
- _tail :: Cons s s a a => Traversal' s s
- _init :: Snoc s s a a => Traversal' s s
- _last :: Snoc s s a a => Traversal' s a
- snoc :: Snoc s s a a => s -> a -> s
- unsnoc :: Snoc s s a a => s -> Maybe (s, a)
- class (Rewrapped s t, Rewrapped t s) => Rewrapping s t
- class Wrapped s => Rewrapped (s :: *) (t :: *)
- class Wrapped s where
  - type Unwrapped s :: *
  - _Wrapped' :: Iso' s (Unwrapped s)
- pattern Unwrapped :: Rewrapped t t => t -> Unwrapped t
- pattern Wrapped :: Rewrapped s s => Unwrapped s -> s
- _GWrapped' :: (Generic s, D1 d (C1 c (S1 s' (Rec0 a))) ~ Rep s, Unwrapped s ~ GUnwrapped (Rep s)) => Iso' s (Unwrapped s)
- _Unwrapped' :: Wrapped s => Iso' (Unwrapped s) s
- _Wrapped :: Rewrapping s t => Iso s t (Unwrapped s) (Unwrapped t)
- _Unwrapped :: Rewrapping s t => Iso (Unwrapped t) (Unwrapped s) t s
- op :: Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s
- _Wrapping' :: Wrapped s => (Unwrapped s -> s) -> Iso' s (Unwrapped s)
- _Unwrapping' :: Wrapped s => (Unwrapped s -> s) -> Iso' (Unwrapped s) s
- _Wrapping :: Rewrapping s t => (Unwrapped s -> s) -> Iso s t (Unwrapped s) (Unwrapped t)
- _Unwrapping :: Rewrapping s t => (Unwrapped s -> s) -> Iso (Unwrapped t) (Unwrapped s) t s
- ala :: (Functor f, Rewrapping s t) => (Unwrapped s -> s) -> ((Unwrapped t -> t) -> f s) -> f (Unwrapped s)
- alaf :: (Functor f, Functor g, Rewrapping s t) => (Unwrapped s -> s) -> (f t -> g s) -> f (Unwrapped t) -> g (Unwrapped s)
- class (Magnified m ~ Magnified n, MonadReader b m, MonadReader a n) => Magnify m n b a | m -> b, n -> a, m a -> n, n b -> m where
  - magnify :: ((Functor (Magnified m c), Contravariant (Magnified m c)) => LensLike' (Magnified m c) a b) -> m c -> n c
- class (MonadState s m, MonadState t n) => Zoom m n s t | m -> s, n -> t, m t -> n, n s -> m where
  - zoom :: LensLike' (Zoomed m c) t s -> m c -> n c
- type family Magnified (m :: * -> *) :: * -> * -> *
- type family Zoomed (m :: * -> *) :: * -> * -> *
- class GPlated1 f g
- class GPlated a g
- class Plated a where
  - plate :: Traversal' a a
- deep :: (Conjoined p, Applicative f, Plated s) => Traversing p f s s a b -> Over p f s s a b
- children :: Plated a => a -> [a]
- rewrite :: Plated a => (a -> Maybe a) -> a -> a
- rewriteOf :: ASetter a b a b -> (b -> Maybe a) -> a -> b
- rewriteOn :: Plated a => ASetter s t a a -> (a -> Maybe a) -> s -> t
- rewriteOnOf :: ASetter s t a b -> ASetter a b a b -> (b -> Maybe a) -> s -> t
- rewriteM :: (Monad m, Plated a) => (a -> m (Maybe a)) -> a -> m a
- rewriteMOf :: Monad m => LensLike (WrappedMonad m) a b a b -> (b -> m (Maybe a)) -> a -> m b
- rewriteMOn :: (Monad m, Plated a) => LensLike (WrappedMonad m) s t a a -> (a -> m (Maybe a)) -> s -> m t
- rewriteMOnOf :: Monad m => LensLike (WrappedMonad m) s t a b -> LensLike (WrappedMonad m) a b a b -> (b -> m (Maybe a)) -> s -> m t
- universe :: Plated a => a -> [a]
- universeOf :: Getting [a] a a -> a -> [a]
- universeOn :: Plated a => Getting [a] s a -> s -> [a]
- universeOnOf :: Getting [a] s a -> Getting [a] a a -> s -> [a]
- cosmos :: Plated a => Fold a a
- cosmosOf :: (Applicative f, Contravariant f) => LensLike' f a a -> LensLike' f a a
- cosmosOn :: (Applicative f, Contravariant f, Plated a) => LensLike' f s a -> LensLike' f s a
- cosmosOnOf :: (Applicative f, Contravariant f) => LensLike' f s a -> LensLike' f a a -> LensLike' f s a
- transform :: Plated a => (a -> a) -> a -> a
- transformOn :: Plated a => ASetter s t a a -> (a -> a) -> s -> t
- transformOf :: ASetter a b a b -> (b -> b) -> a -> b
- transformOnOf :: ASetter s t a b -> ASetter a b a b -> (b -> b) -> s -> t
- transformM :: (Monad m, Plated a) => (a -> m a) -> a -> m a
- transformMOn :: (Monad m, Plated a) => LensLike (WrappedMonad m) s t a a -> (a -> m a) -> s -> m t
- transformMOf :: Monad m => LensLike (WrappedMonad m) a b a b -> (b -> m b) -> a -> m b
- transformMOnOf :: Monad m => LensLike (WrappedMonad m) s t a b -> LensLike (WrappedMonad m) a b a b -> (b -> m b) -> s -> m t
- contexts :: Plated a => a -> [Context a a a]
- contextsOf :: ATraversal' a a -> a -> [Context a a a]
- contextsOn :: Plated a => ATraversal s t a a -> s -> [Context a a t]
- contextsOnOf :: ATraversal s t a a -> ATraversal' a a -> s -> [Context a a t]
- holes :: Plated a => a -> [Pretext (->) a a a]
- holesOn :: Conjoined p => Over p (Bazaar p a a) s t a a -> s -> [Pretext p a a t]
- holesOnOf :: Conjoined p => LensLike (Bazaar p r r) s t a b -> Over p (Bazaar p r r) a b r r -> s -> [Pretext p r r t]
- paraOf :: Getting (Endo [a]) a a -> (a -> [r] -> r) -> a -> r
- para :: Plated a => (a -> [r] -> r) -> a -> r
- composOpFold :: Plated a => b -> (b -> b -> b) -> (a -> b) -> a -> b
- parts :: Plated a => Lens' a [a]
- gplate :: (Generic a, GPlated a (Rep a)) => Traversal' a a
- gplate1 :: (Generic1 f, GPlated1 f (Rep1 f)) => Traversal' (f a) (f a)
- class Each s t a b | s -> a, t -> b, s b -> t, t a -> s where
  - each :: Traversal s t a b
- class Ixed m => At m where
  - at :: Index m -> Lens' m (Maybe (IxValue m))
- class Ixed m where
  - ix :: Index m -> Traversal' m (IxValue m)
- type family IxValue (m :: *) :: *
- class Contains m where
  - contains :: Index m -> Lens' m Bool
- type family Index (s :: *) :: *
- icontains :: Contains m => Index m -> IndexedLens' (Index m) m Bool
- iix :: Ixed m => Index m -> IndexedTraversal' (Index m) m (IxValue m)
- ixAt :: At m => Index m -> Traversal' m (IxValue m)
- sans :: At m => Index m -> m -> m
- iat :: At m => Index m -> IndexedLens' (Index m) m (Maybe (IxValue m))
- makePrisms :: Name -> DecsQ
- makeClassyPrisms :: Name -> DecsQ
- type ClassyNamer = Name -> Maybe (Name, Name)
- data DefName
  - = TopName Name
  - | MethodName Name Name
- type FieldNamer = Name -> [Name] -> Name -> [DefName]
- data LensRules
- simpleLenses :: Lens' LensRules Bool
- generateSignatures :: Lens' LensRules Bool
- generateUpdateableOptics :: Lens' LensRules Bool
- generateLazyPatterns :: Lens' LensRules Bool
- createClass :: Lens' LensRules Bool
- lensField :: Lens' LensRules FieldNamer
- lensClass :: Lens' LensRules ClassyNamer
- lensRules :: LensRules
- underscoreNoPrefixNamer :: FieldNamer
- lensRulesFor :: [(String, String)] -> LensRules
- lookingupNamer :: [(String, String)] -> FieldNamer
- mappingNamer :: (String -> [String]) -> FieldNamer
- classyRules :: LensRules
- classyRules_ :: LensRules
- makeLenses :: Name -> DecsQ
- makeClassy :: Name -> DecsQ
- makeClassy_ :: Name -> DecsQ
- makeLensesFor :: [(String, String)] -> Name -> DecsQ
- makeClassyFor :: String -> String -> [(String, String)] -> Name -> DecsQ
- makeLensesWith :: LensRules -> Name -> DecsQ
- declareLenses :: DecsQ -> DecsQ
- declareLensesFor :: [(String, String)] -> DecsQ -> DecsQ
- declareClassy :: DecsQ -> DecsQ
- declareClassyFor :: [(String, (String, String))] -> [(String, String)] -> DecsQ -> DecsQ
- declarePrisms :: DecsQ -> DecsQ
- declareWrapped :: DecsQ -> DecsQ
- declareFields :: DecsQ -> DecsQ
- declareLensesWith :: LensRules -> DecsQ -> DecsQ
- makeWrapped :: Name -> DecsQ
- underscoreFields :: LensRules
- underscoreNamer :: FieldNamer
- camelCaseFields :: LensRules
- camelCaseNamer :: FieldNamer
- classUnderscoreNoPrefixFields :: LensRules
- classUnderscoreNoPrefixNamer :: FieldNamer
- abbreviatedFields :: LensRules
- abbreviatedNamer :: FieldNamer
- makeFields :: Name -> DecsQ
- makeFieldsNoPrefix :: Name -> DecsQ
- defaultFieldRules :: LensRules

# Documentation

class (Functor t, Foldable t) => Traversable (t :: Type -> Type) where #

Minimal complete definition

traverse | sequenceA

Methods

traverse :: Applicative f => (a -> f b) -> t a -> f (t b) #

#### Instances

Instances details

Traversable [] |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> [a] -> f [b] # sequenceA :: Applicative f => [f a] -> f [a] mapM :: Monad m => (a -> m b) -> [a] -> m [b] sequence :: Monad m => [m a] -> m [a]
Traversable Maybe |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Maybe a -> f (Maybe b) # sequenceA :: Applicative f => Maybe (f a) -> f (Maybe a) mapM :: Monad m => (a -> m b) -> Maybe a -> m (Maybe b) sequence :: Monad m => Maybe (m a) -> m (Maybe a)
Traversable Par1 |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Par1 a -> f (Par1 b) # sequenceA :: Applicative f => Par1 (f a) -> f (Par1 a) mapM :: Monad m => (a -> m b) -> Par1 a -> m (Par1 b) sequence :: Monad m => Par1 (m a) -> m (Par1 a)
Traversable Identity |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Identity a -> f (Identity b) # sequenceA :: Applicative f => Identity (f a) -> f (Identity a) mapM :: Monad m => (a -> m b) -> Identity a -> m (Identity b) sequence :: Monad m => Identity (m a) -> m (Identity a)
Traversable Complex |
Instance details Defined in Data.Complex Methods traverse :: Applicative f => (a -> f b) -> Complex a -> f (Complex b) # sequenceA :: Applicative f => Complex (f a) -> f (Complex a) mapM :: Monad m => (a -> m b) -> Complex a -> m (Complex b) sequence :: Monad m => Complex (m a) -> m (Complex a)
Traversable Sum |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Sum a -> f (Sum b) # sequenceA :: Applicative f => Sum (f a) -> f (Sum a) mapM :: Monad m => (a -> m b) -> Sum a -> m (Sum b) sequence :: Monad m => Sum (m a) -> m (Sum a)
Traversable Product |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Product a -> f (Product b) # sequenceA :: Applicative f => Product (f a) -> f (Product a) mapM :: Monad m => (a -> m b) -> Product a -> m (Product b) sequence :: Monad m => Product (m a) -> m (Product a)
Traversable NonEmpty |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> NonEmpty a -> f (NonEmpty b) # sequenceA :: Applicative f => NonEmpty (f a) -> f (NonEmpty a) mapM :: Monad m => (a -> m b) -> NonEmpty a -> m (NonEmpty b) sequence :: Monad m => NonEmpty (m a) -> m (NonEmpty a)
Traversable Last |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Last a -> f (Last b) # sequenceA :: Applicative f => Last (f a) -> f (Last a) mapM :: Monad m => (a -> m b) -> Last a -> m (Last b) sequence :: Monad m => Last (m a) -> m (Last a)
Traversable First |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> First a -> f (First b) # sequenceA :: Applicative f => First (f a) -> f (First a) mapM :: Monad m => (a -> m b) -> First a -> m (First b) sequence :: Monad m => First (m a) -> m (First a)
Traversable Dual |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Dual a -> f (Dual b) # sequenceA :: Applicative f => Dual (f a) -> f (Dual a) mapM :: Monad m => (a -> m b) -> Dual a -> m (Dual b) sequence :: Monad m => Dual (m a) -> m (Dual a)
Traversable Down |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Down a -> f (Down b) # sequenceA :: Applicative f => Down (f a) -> f (Down a) mapM :: Monad m => (a -> m b) -> Down a -> m (Down b) sequence :: Monad m => Down (m a) -> m (Down a)
Traversable ZipList |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> ZipList a -> f (ZipList b) # sequenceA :: Applicative f => ZipList (f a) -> f (ZipList a) mapM :: Monad m => (a -> m b) -> ZipList a -> m (ZipList b) sequence :: Monad m => ZipList (m a) -> m (ZipList a)
Traversable IntMap |
Instance details Defined in Data.IntMap.Internal Methods traverse :: Applicative f => (a -> f b) -> IntMap a -> f (IntMap b) # sequenceA :: Applicative f => IntMap (f a) -> f (IntMap a) mapM :: Monad m => (a -> m b) -> IntMap a -> m (IntMap b) sequence :: Monad m => IntMap (m a) -> m (IntMap a)
Traversable Vector |
Instance details Defined in Data.Vector Methods traverse :: Applicative f => (a -> f b) -> Vector a -> f (Vector b) # sequenceA :: Applicative f => Vector (f a) -> f (Vector a) mapM :: Monad m => (a -> m b) -> Vector a -> m (Vector b) sequence :: Monad m => Vector (m a) -> m (Vector a)
Traversable Tree |
Instance details Defined in Data.Tree Methods traverse :: Applicative f => (a -> f b) -> Tree a -> f (Tree b) # sequenceA :: Applicative f => Tree (f a) -> f (Tree a) mapM :: Monad m => (a -> m b) -> Tree a -> m (Tree b) sequence :: Monad m => Tree (m a) -> m (Tree a)
Traversable First |
Instance details Defined in Data.Semigroup Methods traverse :: Applicative f => (a -> f b) -> First a -> f (First b) # sequenceA :: Applicative f => First (f a) -> f (First a) mapM :: Monad m => (a -> m b) -> First a -> m (First b) sequence :: Monad m => First (m a) -> m (First a)
Traversable Last |
Instance details Defined in Data.Semigroup Methods traverse :: Applicative f => (a -> f b) -> Last a -> f (Last b) # sequenceA :: Applicative f => Last (f a) -> f (Last a) mapM :: Monad m => (a -> m b) -> Last a -> m (Last b) sequence :: Monad m => Last (m a) -> m (Last a)
Traversable Max |
Instance details Defined in Data.Semigroup Methods traverse :: Applicative f => (a -> f b) -> Max a -> f (Max b) # sequenceA :: Applicative f => Max (f a) -> f (Max a) mapM :: Monad m => (a -> m b) -> Max a -> m (Max b) sequence :: Monad m => Max (m a) -> m (Max a)
Traversable Min |
Instance details Defined in Data.Semigroup Methods traverse :: Applicative f => (a -> f b) -> Min a -> f (Min b) # sequenceA :: Applicative f => Min (f a) -> f (Min a) mapM :: Monad m => (a -> m b) -> Min a -> m (Min b) sequence :: Monad m => Min (m a) -> m (Min a)
Traversable Option |
Instance details Defined in Data.Semigroup Methods traverse :: Applicative f => (a -> f b) -> Option a -> f (Option b) # sequenceA :: Applicative f => Option (f a) -> f (Option a) mapM :: Monad m => (a -> m b) -> Option a -> m (Option b) sequence :: Monad m => Option (m a) -> m (Option a)
Traversable Seq |
Instance details Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> Seq a -> f (Seq b) # sequenceA :: Applicative f => Seq (f a) -> f (Seq a) mapM :: Monad m => (a -> m b) -> Seq a -> m (Seq b) sequence :: Monad m => Seq (m a) -> m (Seq a)
Traversable Elem |
Instance details Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> Elem a -> f (Elem b) # sequenceA :: Applicative f => Elem (f a) -> f (Elem a) mapM :: Monad m => (a -> m b) -> Elem a -> m (Elem b) sequence :: Monad m => Elem (m a) -> m (Elem a)
Traversable Node |
Instance details Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> Node a -> f (Node b) # sequenceA :: Applicative f => Node (f a) -> f (Node a) mapM :: Monad m => (a -> m b) -> Node a -> m (Node b) sequence :: Monad m => Node (m a) -> m (Node a)
Traversable FingerTree |
Instance details Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> FingerTree a -> f (FingerTree b) # sequenceA :: Applicative f => FingerTree (f a) -> f (FingerTree a) mapM :: Monad m => (a -> m b) -> FingerTree a -> m (FingerTree b) sequence :: Monad m => FingerTree (m a) -> m (FingerTree a)
Traversable Digit |
Instance details Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> Digit a -> f (Digit b) # sequenceA :: Applicative f => Digit (f a) -> f (Digit a) mapM :: Monad m => (a -> m b) -> Digit a -> m (Digit b) sequence :: Monad m => Digit (m a) -> m (Digit a)
Traversable ViewL |
Instance details Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> ViewL a -> f (ViewL b) # sequenceA :: Applicative f => ViewL (f a) -> f (ViewL a) mapM :: Monad m => (a -> m b) -> ViewL a -> m (ViewL b) sequence :: Monad m => ViewL (m a) -> m (ViewL a)
Traversable ViewR |
Instance details Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> ViewR a -> f (ViewR b) # sequenceA :: Applicative f => ViewR (f a) -> f (ViewR a) mapM :: Monad m => (a -> m b) -> ViewR a -> m (ViewR b) sequence :: Monad m => ViewR (m a) -> m (ViewR a)
Traversable Array |
Instance details Defined in Data.Primitive.Array Methods traverse :: Applicative f => (a -> f b) -> Array a -> f (Array b) # sequenceA :: Applicative f => Array (f a) -> f (Array a) mapM :: Monad m => (a -> m b) -> Array a -> m (Array b) sequence :: Monad m => Array (m a) -> m (Array a)
Traversable SmallArray |
Instance details Defined in Data.Primitive.SmallArray Methods traverse :: Applicative f => (a -> f b) -> SmallArray a -> f (SmallArray b) # sequenceA :: Applicative f => SmallArray (f a) -> f (SmallArray a) mapM :: Monad m => (a -> m b) -> SmallArray a -> m (SmallArray b) sequence :: Monad m => SmallArray (m a) -> m (SmallArray a)
Traversable Deque Source # |
Instance details Defined in Control.Lens.Internal.Deque Methods traverse :: Applicative f => (a -> f b) -> Deque a -> f (Deque b) # sequenceA :: Applicative f => Deque (f a) -> f (Deque a) mapM :: Monad m => (a -> m b) -> Deque a -> m (Deque b) sequence :: Monad m => Deque (m a) -> m (Deque a)
Traversable (Either a) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a0 -> f b) -> Either a a0 -> f (Either a b) # sequenceA :: Applicative f => Either a (f a0) -> f (Either a a0) mapM :: Monad m => (a0 -> m b) -> Either a a0 -> m (Either a b) sequence :: Monad m => Either a (m a0) -> m (Either a a0)
Traversable (V1 :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> V1 a -> f (V1 b) # sequenceA :: Applicative f => V1 (f a) -> f (V1 a) mapM :: Monad m => (a -> m b) -> V1 a -> m (V1 b) sequence :: Monad m => V1 (m a) -> m (V1 a)
Traversable (U1 :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> U1 a -> f (U1 b) # sequenceA :: Applicative f => U1 (f a) -> f (U1 a) mapM :: Monad m => (a -> m b) -> U1 a -> m (U1 b) sequence :: Monad m => U1 (m a) -> m (U1 a)
Traversable ((,) a) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a0 -> f b) -> (a, a0) -> f (a, b) # sequenceA :: Applicative f => (a, f a0) -> f (a, a0) mapM :: Monad m => (a0 -> m b) -> (a, a0) -> m (a, b) sequence :: Monad m => (a, m a0) -> m (a, a0)
Traversable (Proxy :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Proxy a -> f (Proxy b) # sequenceA :: Applicative f => Proxy (f a) -> f (Proxy a) mapM :: Monad m => (a -> m b) -> Proxy a -> m (Proxy b) sequence :: Monad m => Proxy (m a) -> m (Proxy a)
Traversable f => Traversable (MaybeT f) |
Instance details Defined in Control.Monad.Trans.Maybe Methods traverse :: Applicative f0 => (a -> f0 b) -> MaybeT f a -> f0 (MaybeT f b) # sequenceA :: Applicative f0 => MaybeT f (f0 a) -> f0 (MaybeT f a) mapM :: Monad m => (a -> m b) -> MaybeT f a -> m (MaybeT f b) sequence :: Monad m => MaybeT f (m a) -> m (MaybeT f a)
(Monad m, Traversable m) => Traversable (CatchT m) |
Instance details Defined in Control.Monad.Catch.Pure Methods traverse :: Applicative f => (a -> f b) -> CatchT m a -> f (CatchT m b) # sequenceA :: Applicative f => CatchT m (f a) -> f (CatchT m a) mapM :: Monad m0 => (a -> m0 b) -> CatchT m a -> m0 (CatchT m b) sequence :: Monad m0 => CatchT m (m0 a) -> m0 (CatchT m a)
Traversable f => Traversable (Cofree f) |
Instance details Defined in Control.Comonad.Cofree Methods traverse :: Applicative f0 => (a -> f0 b) -> Cofree f a -> f0 (Cofree f b) # sequenceA :: Applicative f0 => Cofree f (f0 a) -> f0 (Cofree f a) mapM :: Monad m => (a -> m b) -> Cofree f a -> m (Cofree f b) sequence :: Monad m => Cofree f (m a) -> m (Cofree f a)
Traversable w => Traversable (CoiterT w) |
Instance details Defined in Control.Comonad.Trans.Coiter Methods traverse :: Applicative f => (a -> f b) -> CoiterT w a -> f (CoiterT w b) # sequenceA :: Applicative f => CoiterT w (f a) -> f (CoiterT w a) mapM :: Monad m => (a -> m b) -> CoiterT w a -> m (CoiterT w b) sequence :: Monad m => CoiterT w (m a) -> m (CoiterT w a)
Traversable f => Traversable (F f) |
Instance details Defined in Control.Monad.Free.Church Methods traverse :: Applicative f0 => (a -> f0 b) -> F f a -> f0 (F f b) # sequenceA :: Applicative f0 => F f (f0 a) -> f0 (F f a) mapM :: Monad m => (a -> m b) -> F f a -> m (F f b) sequence :: Monad m => F f (m a) -> m (F f a)
Traversable f => Traversable (Free f) |
Instance details Defined in Control.Monad.Free Methods traverse :: Applicative f0 => (a -> f0 b) -> Free f a -> f0 (Free f b) # sequenceA :: Applicative f0 => Free f (f0 a) -> f0 (Free f a) mapM :: Monad m => (a -> m b) -> Free f a -> m (Free f b) sequence :: Monad m => Free f (m a) -> m (Free f a)
(Monad m, Traversable m) => Traversable (IterT m) |
Instance details Defined in Control.Monad.Trans.Iter Methods traverse :: Applicative f => (a -> f b) -> IterT m a -> f (IterT m b) # sequenceA :: Applicative f => IterT m (f a) -> f (IterT m a) mapM :: Monad m0 => (a -> m0 b) -> IterT m a -> m0 (IterT m b) sequence :: Monad m0 => IterT m (m0 a) -> m0 (IterT m a)
Traversable (Arg a) |
Instance details Defined in Data.Semigroup Methods traverse :: Applicative f => (a0 -> f b) -> Arg a a0 -> f (Arg a b) # sequenceA :: Applicative f => Arg a (f a0) -> f (Arg a a0) mapM :: Monad m => (a0 -> m b) -> Arg a a0 -> m (Arg a b) sequence :: Monad m => Arg a (m a0) -> m (Arg a a0)
Traversable f => Traversable (Yoneda f) |
Instance details Defined in Data.Functor.Yoneda Methods traverse :: Applicative f0 => (a -> f0 b) -> Yoneda f a -> f0 (Yoneda f b) # sequenceA :: Applicative f0 => Yoneda f (f0 a) -> f0 (Yoneda f a) mapM :: Monad m => (a -> m b) -> Yoneda f a -> m (Yoneda f b) sequence :: Monad m => Yoneda f (m a) -> m (Yoneda f a)
Traversable (HashMap k) |
Instance details Defined in Data.HashMap.Base Methods traverse :: Applicative f => (a -> f b) -> HashMap k a -> f (HashMap k b) # sequenceA :: Applicative f => HashMap k (f a) -> f (HashMap k a) mapM :: Monad m => (a -> m b) -> HashMap k a -> m (HashMap k b) sequence :: Monad m => HashMap k (m a) -> m (HashMap k a)
Ix i => Traversable (Array i) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Array i a -> f (Array i b) # sequenceA :: Applicative f => Array i (f a) -> f (Array i a) mapM :: Monad m => (a -> m b) -> Array i a -> m (Array i b) sequence :: Monad m => Array i (m a) -> m (Array i a)
Traversable f => Traversable (Lift f) |
Instance details Defined in Control.Applicative.Lift Methods traverse :: Applicative f0 => (a -> f0 b) -> Lift f a -> f0 (Lift f b) # sequenceA :: Applicative f0 => Lift f (f0 a) -> f0 (Lift f a) mapM :: Monad m => (a -> m b) -> Lift f a -> m (Lift f b) sequence :: Monad m => Lift f (m a) -> m (Lift f a)
Traversable f => Traversable (ListT f) |
Instance details Defined in Control.Monad.Trans.List Methods traverse :: Applicative f0 => (a -> f0 b) -> ListT f a -> f0 (ListT f b) # sequenceA :: Applicative f0 => ListT f (f0 a) -> f0 (ListT f a) mapM :: Monad m => (a -> m b) -> ListT f a -> m (ListT f b) sequence :: Monad m => ListT f (m a) -> m (ListT f a)
Traversable (Map k) |
Instance details Defined in Data.Map.Internal Methods traverse :: Applicative f => (a -> f b) -> Map k a -> f (Map k b) # sequenceA :: Applicative f => Map k (f a) -> f (Map k a) mapM :: Monad m => (a -> m b) -> Map k a -> m (Map k b) sequence :: Monad m => Map k (m a) -> m (Map k a)
Traversable (Level i) Source # |
Instance details Defined in Control.Lens.Internal.Level Methods traverse :: Applicative f => (a -> f b) -> Level i a -> f (Level i b) # sequenceA :: Applicative f => Level i (f a) -> f (Level i a) mapM :: Monad m => (a -> m b) -> Level i a -> m (Level i b) sequence :: Monad m => Level i (m a) -> m (Level i a)
Traversable f => Traversable (Rec1 f) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f0 => (a -> f0 b) -> Rec1 f a -> f0 (Rec1 f b) # sequenceA :: Applicative f0 => Rec1 f (f0 a) -> f0 (Rec1 f a) mapM :: Monad m => (a -> m b) -> Rec1 f a -> m (Rec1 f b) sequence :: Monad m => Rec1 f (m a) -> m (Rec1 f a)
Traversable (URec Char :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> URec Char a -> f (URec Char b) # sequenceA :: Applicative f => URec Char (f a) -> f (URec Char a) mapM :: Monad m => (a -> m b) -> URec Char a -> m (URec Char b) sequence :: Monad m => URec Char (m a) -> m (URec Char a)
Traversable (URec Double :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> URec Double a -> f (URec Double b) # sequenceA :: Applicative f => URec Double (f a) -> f (URec Double a) mapM :: Monad m => (a -> m b) -> URec Double a -> m (URec Double b) sequence :: Monad m => URec Double (m a) -> m (URec Double a)
Traversable (URec Float :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> URec Float a -> f (URec Float b) # sequenceA :: Applicative f => URec Float (f a) -> f (URec Float a) mapM :: Monad m => (a -> m b) -> URec Float a -> m (URec Float b) sequence :: Monad m => URec Float (m a) -> m (URec Float a)
Traversable (URec Int :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> URec Int a -> f (URec Int b) # sequenceA :: Applicative f => URec Int (f a) -> f (URec Int a) mapM :: Monad m => (a -> m b) -> URec Int a -> m (URec Int b) sequence :: Monad m => URec Int (m a) -> m (URec Int a)
Traversable (URec Word :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> URec Word a -> f (URec Word b) # sequenceA :: Applicative f => URec Word (f a) -> f (URec Word a) mapM :: Monad m => (a -> m b) -> URec Word a -> m (URec Word b) sequence :: Monad m => URec Word (m a) -> m (URec Word a)
Traversable (URec (Ptr ()) :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> URec (Ptr ()) a -> f (URec (Ptr ()) b) # sequenceA :: Applicative f => URec (Ptr ()) (f a) -> f (URec (Ptr ()) a) mapM :: Monad m => (a -> m b) -> URec (Ptr ()) a -> m (URec (Ptr ()) b) sequence :: Monad m => URec (Ptr ()) (m a) -> m (URec (Ptr ()) a)
Traversable f => Traversable (Ap f) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f0 => (a -> f0 b) -> Ap f a -> f0 (Ap f b) # sequenceA :: Applicative f0 => Ap f (f0 a) -> f0 (Ap f a) mapM :: Monad m => (a -> m b) -> Ap f a -> m (Ap f b) sequence :: Monad m => Ap f (m a) -> m (Ap f a)
Traversable f => Traversable (Alt f) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f0 => (a -> f0 b) -> Alt f a -> f0 (Alt f b) # sequenceA :: Applicative f0 => Alt f (f0 a) -> f0 (Alt f a) mapM :: Monad m => (a -> m b) -> Alt f a -> m (Alt f b) sequence :: Monad m => Alt f (m a) -> m (Alt f a)
Traversable (Const m :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Const m a -> f (Const m b) # sequenceA :: Applicative f => Const m (f a) -> f (Const m a) mapM :: Monad m0 => (a -> m0 b) -> Const m a -> m0 (Const m b) sequence :: Monad m0 => Const m (m0 a) -> m0 (Const m a)
Bitraversable p => Traversable (Join p) |
Instance details Defined in Data.Bifunctor.Join Methods traverse :: Applicative f => (a -> f b) -> Join p a -> f (Join p b) # sequenceA :: Applicative f => Join p (f a) -> f (Join p a) mapM :: Monad m => (a -> m b) -> Join p a -> m (Join p b) sequence :: Monad m => Join p (m a) -> m (Join p a)
Bitraversable p => Traversable (Fix p) |
Instance details Defined in Data.Bifunctor.Fix Methods traverse :: Applicative f => (a -> f b) -> Fix p a -> f (Fix p b) # sequenceA :: Applicative f => Fix p (f a) -> f (Fix p a) mapM :: Monad m => (a -> m b) -> Fix p a -> m (Fix p b) sequence :: Monad m => Fix p (m a) -> m (Fix p a)
Traversable w => Traversable (EnvT e w) |
Instance details Defined in Control.Comonad.Trans.Env Methods traverse :: Applicative f => (a -> f b) -> EnvT e w a -> f (EnvT e w b) # sequenceA :: Applicative f => EnvT e w (f a) -> f (EnvT e w a) mapM :: Monad m => (a -> m b) -> EnvT e w a -> m (EnvT e w b) sequence :: Monad m => EnvT e w (m a) -> m (EnvT e w a)
Traversable f => Traversable (IdentityT f) |
Instance details Defined in Control.Monad.Trans.Identity Methods traverse :: Applicative f0 => (a -> f0 b) -> IdentityT f a -> f0 (IdentityT f b) # sequenceA :: Applicative f0 => IdentityT f (f0 a) -> f0 (IdentityT f a) mapM :: Monad m => (a -> m b) -> IdentityT f a -> m (IdentityT f b) sequence :: Monad m => IdentityT f (m a) -> m (IdentityT f a)
Traversable f => Traversable (ExceptT e f) |
Instance details Defined in Control.Monad.Trans.Except Methods traverse :: Applicative f0 => (a -> f0 b) -> ExceptT e f a -> f0 (ExceptT e f b) # sequenceA :: Applicative f0 => ExceptT e f (f0 a) -> f0 (ExceptT e f a) mapM :: Monad m => (a -> m b) -> ExceptT e f a -> m (ExceptT e f b) sequence :: Monad m => ExceptT e f (m a) -> m (ExceptT e f a)
Traversable f => Traversable (FreeF f a) |
Instance details Defined in Control.Monad.Trans.Free Methods traverse :: Applicative f0 => (a0 -> f0 b) -> FreeF f a a0 -> f0 (FreeF f a b) # sequenceA :: Applicative f0 => FreeF f a (f0 a0) -> f0 (FreeF f a a0) mapM :: Monad m => (a0 -> m b) -> FreeF f a a0 -> m (FreeF f a b) sequence :: Monad m => FreeF f a (m a0) -> m (FreeF f a a0)
(Monad m, Traversable m, Traversable f) => Traversable (FreeT f m) |
Instance details Defined in Control.Monad.Trans.Free Methods traverse :: Applicative f0 => (a -> f0 b) -> FreeT f m a -> f0 (FreeT f m b) # sequenceA :: Applicative f0 => FreeT f m (f0 a) -> f0 (FreeT f m a) mapM :: Monad m0 => (a -> m0 b) -> FreeT f m a -> m0 (FreeT f m b) sequence :: Monad m0 => FreeT f m (m0 a) -> m0 (FreeT f m a)
Traversable f => Traversable (CofreeF f a) |
Instance details Defined in Control.Comonad.Trans.Cofree Methods traverse :: Applicative f0 => (a0 -> f0 b) -> CofreeF f a a0 -> f0 (CofreeF f a b) # sequenceA :: Applicative f0 => CofreeF f a (f0 a0) -> f0 (CofreeF f a a0) mapM :: Monad m => (a0 -> m b) -> CofreeF f a a0 -> m (CofreeF f a b) sequence :: Monad m => CofreeF f a (m a0) -> m (CofreeF f a a0)
(Traversable f, Traversable w) => Traversable (CofreeT f w) |
Instance details Defined in Control.Comonad.Trans.Cofree Methods traverse :: Applicative f0 => (a -> f0 b) -> CofreeT f w a -> f0 (CofreeT f w b) # sequenceA :: Applicative f0 => CofreeT f w (f0 a) -> f0 (CofreeT f w a) mapM :: Monad m => (a -> m b) -> CofreeT f w a -> m (CofreeT f w b) sequence :: Monad m => CofreeT f w (m a) -> m (CofreeT f w a)
Traversable (Forget r a) |
Instance details Defined in Data.Profunctor.Types Methods traverse :: Applicative f => (a0 -> f b) -> Forget r a a0 -> f (Forget r a b) # sequenceA :: Applicative f => Forget r a (f a0) -> f (Forget r a a0) mapM :: Monad m => (a0 -> m b) -> Forget r a a0 -> m (Forget r a b) sequence :: Monad m => Forget r a (m a0) -> m (Forget r a a0)
Traversable f => Traversable (ErrorT e f) |
Instance details Defined in Control.Monad.Trans.Error Methods traverse :: Applicative f0 => (a -> f0 b) -> ErrorT e f a -> f0 (ErrorT e f b) # sequenceA :: Applicative f0 => ErrorT e f (f0 a) -> f0 (ErrorT e f a) mapM :: Monad m => (a -> m b) -> ErrorT e f a -> m (ErrorT e f b) sequence :: Monad m => ErrorT e f (m a) -> m (ErrorT e f a)
Traversable (Tagged s) |
Instance details Defined in Data.Tagged Methods traverse :: Applicative f => (a -> f b) -> Tagged s a -> f (Tagged s b) # sequenceA :: Applicative f => Tagged s (f a) -> f (Tagged s a) mapM :: Monad m => (a -> m b) -> Tagged s a -> m (Tagged s b) sequence :: Monad m => Tagged s (m a) -> m (Tagged s a)
Traversable f => Traversable (AlongsideRight f a) Source # |

Instance details

Defined in Control.Lens.Internal.Getter

Methods

traverse :: Applicative f0 => (a0 -> f0 b) -> AlongsideRight f a a0 -> f0 (AlongsideRight f a b) #

sequenceA :: Applicative f0 => AlongsideRight f a (f0 a0) -> f0 (AlongsideRight f a a0)

mapM :: Monad m => (a0 -> m b) -> AlongsideRight f a a0 -> m (AlongsideRight f a b)

sequence :: Monad m => AlongsideRight f a (m a0) -> m (AlongsideRight f a a0)

Traversable f => Traversable (AlongsideLeft f b) Source # |

Instance details

Defined in Control.Lens.Internal.Getter

Methods

traverse :: Applicative f0 => (a -> f0 b0) -> AlongsideLeft f b a -> f0 (AlongsideLeft f b b0) #

sequenceA :: Applicative f0 => AlongsideLeft f b (f0 a) -> f0 (AlongsideLeft f b a)

mapM :: Monad m => (a -> m b0) -> AlongsideLeft f b a -> m (AlongsideLeft f b b0)

sequence :: Monad m => AlongsideLeft f b (m a) -> m (AlongsideLeft f b a)

Traversable f => Traversable (Backwards f) |
Instance details Defined in Control.Applicative.Backwards Methods traverse :: Applicative f0 => (a -> f0 b) -> Backwards f a -> f0 (Backwards f b) # sequenceA :: Applicative f0 => Backwards f (f0 a) -> f0 (Backwards f a) mapM :: Monad m => (a -> m b) -> Backwards f a -> m (Backwards f b) sequence :: Monad m => Backwards f (m a) -> m (Backwards f a)
Traversable f => Traversable (Reverse f) |
Instance details Defined in Data.Functor.Reverse Methods traverse :: Applicative f0 => (a -> f0 b) -> Reverse f a -> f0 (Reverse f b) # sequenceA :: Applicative f0 => Reverse f (f0 a) -> f0 (Reverse f a) mapM :: Monad m => (a -> m b) -> Reverse f a -> m (Reverse f b) sequence :: Monad m => Reverse f (m a) -> m (Reverse f a)
Traversable (Constant a :: Type -> Type) |
Instance details Defined in Data.Functor.Constant Methods traverse :: Applicative f => (a0 -> f b) -> Constant a a0 -> f (Constant a b) # sequenceA :: Applicative f => Constant a (f a0) -> f (Constant a a0) mapM :: Monad m => (a0 -> m b) -> Constant a a0 -> m (Constant a b) sequence :: Monad m => Constant a (m a0) -> m (Constant a a0)
Traversable f => Traversable (WriterT w f) |
Instance details Defined in Control.Monad.Trans.Writer.Lazy Methods traverse :: Applicative f0 => (a -> f0 b) -> WriterT w f a -> f0 (WriterT w f b) # sequenceA :: Applicative f0 => WriterT w f (f0 a) -> f0 (WriterT w f a) mapM :: Monad m => (a -> m b) -> WriterT w f a -> m (WriterT w f b) sequence :: Monad m => WriterT w f (m a) -> m (WriterT w f a)
Traversable f => Traversable (WriterT w f) |
Instance details Defined in Control.Monad.Trans.Writer.Strict Methods traverse :: Applicative f0 => (a -> f0 b) -> WriterT w f a -> f0 (WriterT w f b) # sequenceA :: Applicative f0 => WriterT w f (f0 a) -> f0 (WriterT w f a) mapM :: Monad m => (a -> m b) -> WriterT w f a -> m (WriterT w f b) sequence :: Monad m => WriterT w f (m a) -> m (WriterT w f a)
Traversable (K1 i c :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> K1 i c a -> f (K1 i c b) # sequenceA :: Applicative f => K1 i c (f a) -> f (K1 i c a) mapM :: Monad m => (a -> m b) -> K1 i c a -> m (K1 i c b) sequence :: Monad m => K1 i c (m a) -> m (K1 i c a)
(Traversable f, Traversable g) => Traversable (f :+: g) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f0 => (a -> f0 b) -> (f :+: g) a -> f0 ((f :+: g) b) # sequenceA :: Applicative f0 => (f :+: g) (f0 a) -> f0 ((f :+: g) a) mapM :: Monad m => (a -> m b) -> (f :+: g) a -> m ((f :+: g) b) sequence :: Monad m => (f :+: g) (m a) -> m ((f :+: g) a)
(Traversable f, Traversable g) => Traversable (f :*: g) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f0 => (a -> f0 b) -> (f :*: g) a -> f0 ((f :*: g) b) # sequenceA :: Applicative f0 => (f :*: g) (f0 a) -> f0 ((f :*: g) a) mapM :: Monad m => (a -> m b) -> (f :*: g) a -> m ((f :*: g) b) sequence :: Monad m => (f :*: g) (m a) -> m ((f :*: g) a)
(Traversable f, Traversable g) => Traversable (Sum f g) |
Instance details Defined in Data.Functor.Sum Methods traverse :: Applicative f0 => (a -> f0 b) -> Sum f g a -> f0 (Sum f g b) # sequenceA :: Applicative f0 => Sum f g (f0 a) -> f0 (Sum f g a) mapM :: Monad m => (a -> m b) -> Sum f g a -> m (Sum f g b) sequence :: Monad m => Sum f g (m a) -> m (Sum f g a)
(Traversable f, Traversable g) => Traversable (Product f g) |
Instance details Defined in Data.Functor.Product Methods traverse :: Applicative f0 => (a -> f0 b) -> Product f g a -> f0 (Product f g b) # sequenceA :: Applicative f0 => Product f g (f0 a) -> f0 (Product f g a) mapM :: Monad m => (a -> m b) -> Product f g a -> m (Product f g b) sequence :: Monad m => Product f g (m a) -> m (Product f g a)
Traversable (Magma i t b) Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods traverse :: Applicative f => (a -> f b0) -> Magma i t b a -> f (Magma i t b b0) # sequenceA :: Applicative f => Magma i t b (f a) -> f (Magma i t b a) mapM :: Monad m => (a -> m b0) -> Magma i t b a -> m (Magma i t b b0) sequence :: Monad m => Magma i t b (m a) -> m (Magma i t b a)
Traversable f => Traversable (M1 i c f) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f0 => (a -> f0 b) -> M1 i c f a -> f0 (M1 i c f b) # sequenceA :: Applicative f0 => M1 i c f (f0 a) -> f0 (M1 i c f a) mapM :: Monad m => (a -> m b) -> M1 i c f a -> m (M1 i c f b) sequence :: Monad m => M1 i c f (m a) -> m (M1 i c f a)
(Traversable f, Traversable g) => Traversable (f :.: g) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f0 => (a -> f0 b) -> (f :.: g) a -> f0 ((f :.: g) b) # sequenceA :: Applicative f0 => (f :.: g) (f0 a) -> f0 ((f :.: g) a) mapM :: Monad m => (a -> m b) -> (f :.: g) a -> m ((f :.: g) b) sequence :: Monad m => (f :.: g) (m a) -> m ((f :.: g) a)
(Traversable f, Traversable g) => Traversable (Compose f g) |
Instance details Defined in Data.Functor.Compose Methods traverse :: Applicative f0 => (a -> f0 b) -> Compose f g a -> f0 (Compose f g b) # sequenceA :: Applicative f0 => Compose f g (f0 a) -> f0 (Compose f g a) mapM :: Monad m => (a -> m b) -> Compose f g a -> m (Compose f g b) sequence :: Monad m => Compose f g (m a) -> m (Compose f g a)
Bitraversable p => Traversable (WrappedBifunctor p a) |

Instance details

Defined in Data.Bifunctor.Wrapped

Methods

traverse :: Applicative f => (a0 -> f b) -> WrappedBifunctor p a a0 -> f (WrappedBifunctor p a b) #

sequenceA :: Applicative f => WrappedBifunctor p a (f a0) -> f (WrappedBifunctor p a a0)

mapM :: Monad m => (a0 -> m b) -> WrappedBifunctor p a a0 -> m (WrappedBifunctor p a b)

sequence :: Monad m => WrappedBifunctor p a (m a0) -> m (WrappedBifunctor p a a0)

Traversable g => Traversable (Joker g a) |
Instance details Defined in Data.Bifunctor.Joker Methods traverse :: Applicative f => (a0 -> f b) -> Joker g a a0 -> f (Joker g a b) # sequenceA :: Applicative f => Joker g a (f a0) -> f (Joker g a a0) mapM :: Monad m => (a0 -> m b) -> Joker g a a0 -> m (Joker g a b) sequence :: Monad m => Joker g a (m a0) -> m (Joker g a a0)
Bitraversable p => Traversable (Flip p a) |
Instance details Defined in Data.Bifunctor.Flip Methods traverse :: Applicative f => (a0 -> f b) -> Flip p a a0 -> f (Flip p a b) # sequenceA :: Applicative f => Flip p a (f a0) -> f (Flip p a a0) mapM :: Monad m => (a0 -> m b) -> Flip p a a0 -> m (Flip p a b) sequence :: Monad m => Flip p a (m a0) -> m (Flip p a a0)
Traversable (Clown f a :: Type -> Type) |
Instance details Defined in Data.Bifunctor.Clown Methods traverse :: Applicative f0 => (a0 -> f0 b) -> Clown f a a0 -> f0 (Clown f a b) # sequenceA :: Applicative f0 => Clown f a (f0 a0) -> f0 (Clown f a a0) mapM :: Monad m => (a0 -> m b) -> Clown f a a0 -> m (Clown f a b) sequence :: Monad m => Clown f a (m a0) -> m (Clown f a a0)
(Traversable f, Bitraversable p) => Traversable (Tannen f p a) |
Instance details Defined in Data.Bifunctor.Tannen Methods traverse :: Applicative f0 => (a0 -> f0 b) -> Tannen f p a a0 -> f0 (Tannen f p a b) # sequenceA :: Applicative f0 => Tannen f p a (f0 a0) -> f0 (Tannen f p a a0) mapM :: Monad m => (a0 -> m b) -> Tannen f p a a0 -> m (Tannen f p a b) sequence :: Monad m => Tannen f p a (m a0) -> m (Tannen f p a a0)
(Bitraversable p, Traversable g) => Traversable (Biff p f g a) |
Instance details Defined in Data.Bifunctor.Biff Methods traverse :: Applicative f0 => (a0 -> f0 b) -> Biff p f g a a0 -> f0 (Biff p f g a b) # sequenceA :: Applicative f0 => Biff p f g a (f0 a0) -> f0 (Biff p f g a a0) mapM :: Monad m => (a0 -> m b) -> Biff p f g a a0 -> m (Biff p f g a b) sequence :: Monad m => Biff p f g a (m a0) -> m (Biff p f g a a0)

class Bifunctor (p :: Type -> Type -> Type) where #

Minimal complete definition

bimap | first, second

Methods

bimap :: (a -> b) -> (c -> d) -> p a c -> p b d #

#### Instances

Instances details

Bifunctor Either |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> Either a c -> Either b d # first :: (a -> b) -> Either a c -> Either b c # second :: (b -> c) -> Either a b -> Either a c #
Bifunctor (,) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) # first :: (a -> b) -> (a, c) -> (b, c) # second :: (b -> c) -> (a, b) -> (a, c) #
Bifunctor Arg |
Instance details Defined in Data.Semigroup Methods bimap :: (a -> b) -> (c -> d) -> Arg a c -> Arg b d # first :: (a -> b) -> Arg a c -> Arg b c # second :: (b -> c) -> Arg a b -> Arg a c #
Bifunctor ((,,) x1) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> (x1, a, c) -> (x1, b, d) # first :: (a -> b) -> (x1, a, c) -> (x1, b, c) # second :: (b -> c) -> (x1, a, b) -> (x1, a, c) #
Bifunctor (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> Const a c -> Const b d # first :: (a -> b) -> Const a c -> Const b c # second :: (b -> c) -> Const a b -> Const a c #
Functor f => Bifunctor (FreeF f) |
Instance details Defined in Control.Monad.Trans.Free Methods bimap :: (a -> b) -> (c -> d) -> FreeF f a c -> FreeF f b d # first :: (a -> b) -> FreeF f a c -> FreeF f b c # second :: (b -> c) -> FreeF f a b -> FreeF f a c #
Functor f => Bifunctor (CofreeF f) |
Instance details Defined in Control.Comonad.Trans.Cofree Methods bimap :: (a -> b) -> (c -> d) -> CofreeF f a c -> CofreeF f b d # first :: (a -> b) -> CofreeF f a c -> CofreeF f b c # second :: (b -> c) -> CofreeF f a b -> CofreeF f a c #
Bifunctor (Tagged :: Type -> Type -> Type) |
Instance details Defined in Data.Tagged Methods bimap :: (a -> b) -> (c -> d) -> Tagged a c -> Tagged b d # first :: (a -> b) -> Tagged a c -> Tagged b c # second :: (b -> c) -> Tagged a b -> Tagged a c #
Functor f => Bifunctor (AlongsideRight f) Source # |
Instance details Defined in Control.Lens.Internal.Getter Methods bimap :: (a -> b) -> (c -> d) -> AlongsideRight f a c -> AlongsideRight f b d # first :: (a -> b) -> AlongsideRight f a c -> AlongsideRight f b c # second :: (b -> c) -> AlongsideRight f a b -> AlongsideRight f a c #
Functor f => Bifunctor (AlongsideLeft f) Source # |
Instance details Defined in Control.Lens.Internal.Getter Methods bimap :: (a -> b) -> (c -> d) -> AlongsideLeft f a c -> AlongsideLeft f b d # first :: (a -> b) -> AlongsideLeft f a c -> AlongsideLeft f b c # second :: (b -> c) -> AlongsideLeft f a b -> AlongsideLeft f a c #
Bifunctor (Constant :: Type -> Type -> Type) |
Instance details Defined in Data.Functor.Constant Methods bimap :: (a -> b) -> (c -> d) -> Constant a c -> Constant b d # first :: (a -> b) -> Constant a c -> Constant b c # second :: (b -> c) -> Constant a b -> Constant a c #
Bifunctor (K1 i :: Type -> Type -> Type) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> K1 i a c -> K1 i b d # first :: (a -> b) -> K1 i a c -> K1 i b c # second :: (b -> c) -> K1 i a b -> K1 i a c #
Bifunctor ((,,,) x1 x2) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> (x1, x2, a, c) -> (x1, x2, b, d) # first :: (a -> b) -> (x1, x2, a, c) -> (x1, x2, b, c) # second :: (b -> c) -> (x1, x2, a, b) -> (x1, x2, a, c) #
Bifunctor ((,,,,) x1 x2 x3) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> (x1, x2, x3, a, c) -> (x1, x2, x3, b, d) # first :: (a -> b) -> (x1, x2, x3, a, c) -> (x1, x2, x3, b, c) # second :: (b -> c) -> (x1, x2, x3, a, b) -> (x1, x2, x3, a, c) #
Bifunctor p => Bifunctor (WrappedBifunctor p) |
Instance details Defined in Data.Bifunctor.Wrapped Methods bimap :: (a -> b) -> (c -> d) -> WrappedBifunctor p a c -> WrappedBifunctor p b d # first :: (a -> b) -> WrappedBifunctor p a c -> WrappedBifunctor p b c # second :: (b -> c) -> WrappedBifunctor p a b -> WrappedBifunctor p a c #
Functor g => Bifunctor (Joker g :: Type -> Type -> Type) |
Instance details Defined in Data.Bifunctor.Joker Methods bimap :: (a -> b) -> (c -> d) -> Joker g a c -> Joker g b d # first :: (a -> b) -> Joker g a c -> Joker g b c # second :: (b -> c) -> Joker g a b -> Joker g a c #
Bifunctor p => Bifunctor (Flip p) |
Instance details Defined in Data.Bifunctor.Flip Methods bimap :: (a -> b) -> (c -> d) -> Flip p a c -> Flip p b d # first :: (a -> b) -> Flip p a c -> Flip p b c # second :: (b -> c) -> Flip p a b -> Flip p a c #
Functor f => Bifunctor (Clown f :: Type -> Type -> Type) |
Instance details Defined in Data.Bifunctor.Clown Methods bimap :: (a -> b) -> (c -> d) -> Clown f a c -> Clown f b d # first :: (a -> b) -> Clown f a c -> Clown f b c # second :: (b -> c) -> Clown f a b -> Clown f a c #
Bifunctor ((,,,,,) x1 x2 x3 x4) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> (x1, x2, x3, x4, a, c) -> (x1, x2, x3, x4, b, d) # first :: (a -> b) -> (x1, x2, x3, x4, a, c) -> (x1, x2, x3, x4, b, c) # second :: (b -> c) -> (x1, x2, x3, x4, a, b) -> (x1, x2, x3, x4, a, c) #
(Bifunctor p, Bifunctor q) => Bifunctor (Sum p q) |
Instance details Defined in Data.Bifunctor.Sum Methods bimap :: (a -> b) -> (c -> d) -> Sum p q a c -> Sum p q b d # first :: (a -> b) -> Sum p q a c -> Sum p q b c # second :: (b -> c) -> Sum p q a b -> Sum p q a c #
(Bifunctor f, Bifunctor g) => Bifunctor (Product f g) |
Instance details Defined in Data.Bifunctor.Product Methods bimap :: (a -> b) -> (c -> d) -> Product f g a c -> Product f g b d # first :: (a -> b) -> Product f g a c -> Product f g b c # second :: (b -> c) -> Product f g a b -> Product f g a c #
Bifunctor ((,,,,,,) x1 x2 x3 x4 x5) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> (x1, x2, x3, x4, x5, a, c) -> (x1, x2, x3, x4, x5, b, d) # first :: (a -> b) -> (x1, x2, x3, x4, x5, a, c) -> (x1, x2, x3, x4, x5, b, c) # second :: (b -> c) -> (x1, x2, x3, x4, x5, a, b) -> (x1, x2, x3, x4, x5, a, c) #
(Functor f, Bifunctor p) => Bifunctor (Tannen f p) |
Instance details Defined in Data.Bifunctor.Tannen Methods bimap :: (a -> b) -> (c -> d) -> Tannen f p a c -> Tannen f p b d # first :: (a -> b) -> Tannen f p a c -> Tannen f p b c # second :: (b -> c) -> Tannen f p a b -> Tannen f p a c #
(Bifunctor p, Functor f, Functor g) => Bifunctor (Biff p f g) |
Instance details Defined in Data.Bifunctor.Biff Methods bimap :: (a -> b) -> (c -> d) -> Biff p f g a c -> Biff p f g b d # first :: (a -> b) -> Biff p f g a c -> Biff p f g b c # second :: (b -> c) -> Biff p f g a b -> Biff p f g a c #

newtype Identity a #

Constructors

Identity |

Fields

- runIdentity :: a

#### Instances

Instances details

Monad Identity |
Instance details Defined in Data.Functor.Identity Methods (>>=) :: Identity a -> (a -> Identity b) -> Identity b (>>) :: Identity a -> Identity b -> Identity b return :: a -> Identity a
Functor Identity |
Instance details Defined in Data.Functor.Identity Methods fmap :: (a -> b) -> Identity a -> Identity b # (<$) :: a -> Identity b -> Identity a #
MonadFix Identity |
Instance details Defined in Data.Functor.Identity Methods mfix :: (a -> Identity a) -> Identity a
Applicative Identity |
Instance details Defined in Data.Functor.Identity Methods pure :: a -> Identity a (<*>) :: Identity (a -> b) -> Identity a -> Identity b liftA2 :: (a -> b -> c) -> Identity a -> Identity b -> Identity c (*>) :: Identity a -> Identity b -> Identity b (<*) :: Identity a -> Identity b -> Identity a
Foldable Identity |

Instance details

Defined in Data.Functor.Identity

Methods

fold :: Monoid m => Identity m -> m

foldMap :: Monoid m => (a -> m) -> Identity a -> m

foldMap' :: Monoid m => (a -> m) -> Identity a -> m

foldr :: (a -> b -> b) -> b -> Identity a -> b

foldr' :: (a -> b -> b) -> b -> Identity a -> b

foldl :: (b -> a -> b) -> b -> Identity a -> b

foldl' :: (b -> a -> b) -> b -> Identity a -> b

foldr1 :: (a -> a -> a) -> Identity a -> a

foldl1 :: (a -> a -> a) -> Identity a -> a

toList :: Identity a -> [a]

null :: Identity a -> Bool

length :: Identity a -> Int

elem :: Eq a => a -> Identity a -> Bool

maximum :: Ord a => Identity a -> a

minimum :: Ord a => Identity a -> a

sum :: Num a => Identity a -> a

product :: Num a => Identity a -> a

Traversable Identity |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Identity a -> f (Identity b) # sequenceA :: Applicative f => Identity (f a) -> f (Identity a) mapM :: Monad m => (a -> m b) -> Identity a -> m (Identity b) sequence :: Monad m => Identity (m a) -> m (Identity a)
Show1 Identity |
Instance details Defined in Data.Functor.Classes Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Identity a -> ShowS liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Identity a] -> ShowS
Read1 Identity |
Instance details Defined in Data.Functor.Classes Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Identity a) liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Identity a] liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Identity a) liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Identity a]
Ord1 Identity |
Instance details Defined in Data.Functor.Classes Methods liftCompare :: (a -> b -> Ordering) -> Identity a -> Identity b -> Ordering
Eq1 Identity |
Instance details Defined in Data.Functor.Classes Methods liftEq :: (a -> b -> Bool) -> Identity a -> Identity b -> Bool
Comonad Identity |
Instance details Defined in Control.Comonad Methods extract :: Identity a -> a Source # duplicate :: Identity a -> Identity (Identity a) Source # extend :: (Identity a -> b) -> Identity a -> Identity b Source #
ComonadApply Identity |
Instance details Defined in Control.Comonad Methods (<@>) :: Identity (a -> b) -> Identity a -> Identity b Source # (@>) :: Identity a -> Identity b -> Identity b Source # (<@) :: Identity a -> Identity b -> Identity a Source #
Distributive Identity |
Instance details Defined in Data.Distributive Methods distribute :: Functor f => f (Identity a) -> Identity (f a) Source # collect :: Functor f => (a -> Identity b) -> f a -> Identity (f b) Source # distributeM :: Monad m => m (Identity a) -> Identity (m a) Source # collectM :: Monad m => (a -> Identity b) -> m a -> Identity (m b) Source #
Hashable1 Identity |
Instance details Defined in Data.Hashable.Class Methods liftHashWithSalt :: (Int -> a -> Int) -> Int -> Identity a -> Int Source #
Traversable1 Identity |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Identity a -> f (Identity b) Source # sequence1 :: Apply f => Identity (f b) -> f (Identity b) Source #
Foldable1 Identity |
Instance details Defined in Data.Semigroup.Foldable.Class Methods fold1 :: Semigroup m => Identity m -> m Source # foldMap1 :: Semigroup m => (a -> m) -> Identity a -> m Source # toNonEmpty :: Identity a -> NonEmpty a Source #
Apply Identity |
Instance details Defined in Data.Functor.Bind.Class Methods (<.>) :: Identity (a -> b) -> Identity a -> Identity b Source # (.>) :: Identity a -> Identity b -> Identity b Source # (<.) :: Identity a -> Identity b -> Identity a Source # liftF2 :: (a -> b -> c) -> Identity a -> Identity b -> Identity c Source #
Bind Identity |
Instance details Defined in Data.Functor.Bind.Class Methods (>>-) :: Identity a -> (a -> Identity b) -> Identity b Source # join :: Identity (Identity a) -> Identity a Source #
Extend Identity |
Instance details Defined in Data.Functor.Extend Methods duplicated :: Identity a -> Identity (Identity a) Source # extended :: (Identity a -> b) -> Identity a -> Identity b Source #
NFData1 Identity |
Instance details Defined in Control.DeepSeq Methods liftRnf :: (a -> ()) -> Identity a -> ()
Settable Identity Source # | So you can pass our `Setter` into combinators from other lens libraries.
Instance details Defined in Control.Lens.Internal.Setter Methods untainted :: Identity a -> a Source # untaintedDot :: Profunctor p => p a (Identity b) -> p a b Source # taintedDot :: Profunctor p => p a b -> p a (Identity b) Source #
Representable Identity |
Instance details Defined in Data.Functor.Rep Associated Types type Rep Identity Methods tabulate :: (Rep Identity -> a) -> Identity a index :: Identity a -> Rep Identity -> a
Sieve ReifiedGetter Identity Source # |
Instance details Defined in Control.Lens.Reified Methods sieve :: ReifiedGetter a b -> a -> Identity b Source #
Cosieve ReifiedGetter Identity Source # |
Instance details Defined in Control.Lens.Reified Methods cosieve :: ReifiedGetter a b -> Identity a -> b Source #
TraversableWithIndex () Identity Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (() -> a -> f b) -> Identity a -> f (Identity b) Source # itraversed :: IndexedTraversal () (Identity a) (Identity b) a b Source #
FoldableWithIndex () Identity Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (() -> a -> m) -> Identity a -> m Source #

ifolded :: IndexedFold () (Identity a) a Source #

ifoldr :: (() -> a -> b -> b) -> b -> Identity a -> b Source #

ifoldl :: (() -> b -> a -> b) -> b -> Identity a -> b Source #

ifoldr' :: (() -> a -> b -> b) -> b -> Identity a -> b Source #

ifoldl' :: (() -> b -> a -> b) -> b -> Identity a -> b Source #

FunctorWithIndex () Identity Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (() -> a -> b) -> Identity a -> Identity b Source # imapped :: IndexedSetter () (Identity a) (Identity b) a b Source #
Monad m => MonadFree Identity (IterT m) |
Instance details Defined in Control.Monad.Trans.Iter Methods wrap :: Identity (IterT m a) -> IterT m a Source #
Comonad w => ComonadCofree Identity (CoiterT w) |
Instance details Defined in Control.Comonad.Trans.Coiter Methods unwrap :: CoiterT w a -> Identity (CoiterT w a) Source #
Unbox a => Vector Vector (Identity a) |

Instance details

Defined in Data.Vector.Unboxed.Base

Methods

basicUnsafeFreeze :: PrimMonad m => Mutable Vector (PrimState m) (Identity a) -> m (Vector (Identity a)) Source #

basicUnsafeThaw :: PrimMonad m => Vector (Identity a) -> m (Mutable Vector (PrimState m) (Identity a)) Source #

basicLength :: Vector (Identity a) -> Int Source #

basicUnsafeSlice :: Int -> Int -> Vector (Identity a) -> Vector (Identity a) Source #

basicUnsafeIndexM :: Monad m => Vector (Identity a) -> Int -> m (Identity a) Source #

basicUnsafeCopy :: PrimMonad m => Mutable Vector (PrimState m) (Identity a) -> Vector (Identity a) -> m () Source #

elemseq :: Vector (Identity a) -> Identity a -> b -> b Source #

Unbox a => MVector MVector (Identity a) |

Instance details

Defined in Data.Vector.Unboxed.Base

Methods

basicLength :: MVector s (Identity a) -> Int Source #

basicUnsafeSlice :: Int -> Int -> MVector s (Identity a) -> MVector s (Identity a) Source #

basicOverlaps :: MVector s (Identity a) -> MVector s (Identity a) -> Bool Source #

basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (Identity a)) Source #

basicInitialize :: PrimMonad m => MVector (PrimState m) (Identity a) -> m () Source #

basicUnsafeReplicate :: PrimMonad m => Int -> Identity a -> m (MVector (PrimState m) (Identity a)) Source #

basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (Identity a) -> Int -> m (Identity a) Source #

basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (Identity a) -> Int -> Identity a -> m () Source #

basicClear :: PrimMonad m => MVector (PrimState m) (Identity a) -> m () Source #

basicSet :: PrimMonad m => MVector (PrimState m) (Identity a) -> Identity a -> m () Source #

basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (Identity a) -> MVector (PrimState m) (Identity a) -> m () Source #

basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (Identity a) -> MVector (PrimState m) (Identity a) -> m () Source #

basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (Identity a) -> Int -> m (MVector (PrimState m) (Identity a)) Source #

Bounded a => Bounded (Identity a) |
Instance details Defined in Data.Functor.Identity Methods minBound :: Identity a maxBound :: Identity a
Enum a => Enum (Identity a) |

Instance details

Defined in Data.Functor.Identity

Methods

succ :: Identity a -> Identity a

pred :: Identity a -> Identity a

toEnum :: Int -> Identity a

fromEnum :: Identity a -> Int

enumFrom :: Identity a -> [Identity a]

enumFromThen :: Identity a -> Identity a -> [Identity a]

enumFromTo :: Identity a -> Identity a -> [Identity a]

enumFromThenTo :: Identity a -> Identity a -> Identity a -> [Identity a]

Eq a => Eq (Identity a) |
Instance details Defined in Data.Functor.Identity Methods (==) :: Identity a -> Identity a -> Bool (/=) :: Identity a -> Identity a -> Bool
Floating a => Floating (Identity a) |

Instance details

Defined in Data.Functor.Identity

Methods

pi :: Identity a

exp :: Identity a -> Identity a

log :: Identity a -> Identity a

sqrt :: Identity a -> Identity a

(**) :: Identity a -> Identity a -> Identity a

logBase :: Identity a -> Identity a -> Identity a

sin :: Identity a -> Identity a

cos :: Identity a -> Identity a

tan :: Identity a -> Identity a

asin :: Identity a -> Identity a

acos :: Identity a -> Identity a

atan :: Identity a -> Identity a

sinh :: Identity a -> Identity a

cosh :: Identity a -> Identity a

tanh :: Identity a -> Identity a

asinh :: Identity a -> Identity a

acosh :: Identity a -> Identity a

atanh :: Identity a -> Identity a

log1p :: Identity a -> Identity a

expm1 :: Identity a -> Identity a

log1pexp :: Identity a -> Identity a

log1mexp :: Identity a -> Identity a

Fractional a => Fractional (Identity a) |
Instance details Defined in Data.Functor.Identity Methods (/) :: Identity a -> Identity a -> Identity a recip :: Identity a -> Identity a fromRational :: Rational -> Identity a
Integral a => Integral (Identity a) |

Instance details

Defined in Data.Functor.Identity

Methods

quot :: Identity a -> Identity a -> Identity a

rem :: Identity a -> Identity a -> Identity a

div :: Identity a -> Identity a -> Identity a

mod :: Identity a -> Identity a -> Identity a

quotRem :: Identity a -> Identity a -> (Identity a, Identity a)

divMod :: Identity a -> Identity a -> (Identity a, Identity a)

toInteger :: Identity a -> Integer

Data a => Data (Identity a) |

Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Identity a -> c (Identity a)

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Identity a)

toConstr :: Identity a -> Constr

dataTypeOf :: Identity a -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Identity a))

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Identity a))

gmapT :: (forall b. Data b => b -> b) -> Identity a -> Identity a

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Identity a -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Identity a -> r

gmapQ :: (forall d. Data d => d -> u) -> Identity a -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Identity a -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Identity a -> m (Identity a)

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Identity a -> m (Identity a)

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Identity a -> m (Identity a)

Num a => Num (Identity a) |
Instance details Defined in Data.Functor.Identity Methods (+) :: Identity a -> Identity a -> Identity a (-) :: Identity a -> Identity a -> Identity a (*) :: Identity a -> Identity a -> Identity a negate :: Identity a -> Identity a abs :: Identity a -> Identity a signum :: Identity a -> Identity a fromInteger :: Integer -> Identity a
Ord a => Ord (Identity a) |
Instance details Defined in Data.Functor.Identity Methods compare :: Identity a -> Identity a -> Ordering (<) :: Identity a -> Identity a -> Bool (<=) :: Identity a -> Identity a -> Bool (>) :: Identity a -> Identity a -> Bool (>=) :: Identity a -> Identity a -> Bool max :: Identity a -> Identity a -> Identity a min :: Identity a -> Identity a -> Identity a
Read a => Read (Identity a) |
Instance details Defined in Data.Functor.Identity Methods readsPrec :: Int -> ReadS (Identity a) readList :: ReadS [Identity a] readPrec :: ReadPrec (Identity a) readListPrec :: ReadPrec [Identity a]
Real a => Real (Identity a) |
Instance details Defined in Data.Functor.Identity Methods toRational :: Identity a -> Rational
RealFloat a => RealFloat (Identity a) |

Instance details

Defined in Data.Functor.Identity

Methods

floatRadix :: Identity a -> Integer

floatDigits :: Identity a -> Int

floatRange :: Identity a -> (Int, Int)

decodeFloat :: Identity a -> (Integer, Int)

encodeFloat :: Integer -> Int -> Identity a

exponent :: Identity a -> Int

significand :: Identity a -> Identity a

scaleFloat :: Int -> Identity a -> Identity a

isNaN :: Identity a -> Bool

isInfinite :: Identity a -> Bool

isDenormalized :: Identity a -> Bool

isNegativeZero :: Identity a -> Bool

isIEEE :: Identity a -> Bool

atan2 :: Identity a -> Identity a -> Identity a

RealFrac a => RealFrac (Identity a) |
Instance details Defined in Data.Functor.Identity Methods properFraction :: Integral b => Identity a -> (b, Identity a) truncate :: Integral b => Identity a -> b round :: Integral b => Identity a -> b ceiling :: Integral b => Identity a -> b floor :: Integral b => Identity a -> b
Show a => Show (Identity a) |
Instance details Defined in Data.Functor.Identity Methods showsPrec :: Int -> Identity a -> ShowS show :: Identity a -> String showList :: [Identity a] -> ShowS
Ix a => Ix (Identity a) |
Instance details Defined in Data.Functor.Identity Methods range :: (Identity a, Identity a) -> [Identity a] index :: (Identity a, Identity a) -> Identity a -> Int unsafeIndex :: (Identity a, Identity a) -> Identity a -> Int inRange :: (Identity a, Identity a) -> Identity a -> Bool rangeSize :: (Identity a, Identity a) -> Int unsafeRangeSize :: (Identity a, Identity a) -> Int
Generic (Identity a) |
Instance details Defined in Data.Functor.Identity Associated Types type Rep (Identity a) :: Type -> Type Methods from :: Identity a -> Rep (Identity a) x to :: Rep (Identity a) x -> Identity a
Semigroup a => Semigroup (Identity a) |
Instance details Defined in Data.Functor.Identity Methods (<>) :: Identity a -> Identity a -> Identity a sconcat :: NonEmpty (Identity a) -> Identity a stimes :: Integral b => b -> Identity a -> Identity a
Monoid a => Monoid (Identity a) |
Instance details Defined in Data.Functor.Identity Methods mempty :: Identity a mappend :: Identity a -> Identity a -> Identity a mconcat :: [Identity a] -> Identity a
Storable a => Storable (Identity a) |

Instance details

Defined in Data.Functor.Identity

Methods

sizeOf :: Identity a -> Int

alignment :: Identity a -> Int

peekElemOff :: Ptr (Identity a) -> Int -> IO (Identity a)

pokeElemOff :: Ptr (Identity a) -> Int -> Identity a -> IO ()

peekByteOff :: Ptr b -> Int -> IO (Identity a)

pokeByteOff :: Ptr b -> Int -> Identity a -> IO ()

peek :: Ptr (Identity a) -> IO (Identity a)

poke :: Ptr (Identity a) -> Identity a -> IO ()

FiniteBits a => FiniteBits (Identity a) |
Instance details Defined in Data.Functor.Identity Methods finiteBitSize :: Identity a -> Int countLeadingZeros :: Identity a -> Int countTrailingZeros :: Identity a -> Int
Bits a => Bits (Identity a) |

Instance details

Defined in Data.Functor.Identity

Methods

(.&.) :: Identity a -> Identity a -> Identity a

(.|.) :: Identity a -> Identity a -> Identity a

xor :: Identity a -> Identity a -> Identity a

complement :: Identity a -> Identity a

shift :: Identity a -> Int -> Identity a

rotate :: Identity a -> Int -> Identity a

zeroBits :: Identity a

bit :: Int -> Identity a

setBit :: Identity a -> Int -> Identity a

clearBit :: Identity a -> Int -> Identity a

complementBit :: Identity a -> Int -> Identity a

testBit :: Identity a -> Int -> Bool

bitSizeMaybe :: Identity a -> Maybe Int

bitSize :: Identity a -> Int

isSigned :: Identity a -> Bool

shiftL :: Identity a -> Int -> Identity a

unsafeShiftL :: Identity a -> Int -> Identity a

shiftR :: Identity a -> Int -> Identity a

unsafeShiftR :: Identity a -> Int -> Identity a

rotateL :: Identity a -> Int -> Identity a

rotateR :: Identity a -> Int -> Identity a

popCount :: Identity a -> Int

Hashable a => Hashable (Identity a) |
Instance details Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> Identity a -> Int Source # hash :: Identity a -> Int Source #
NFData a => NFData (Identity a) |
Instance details Defined in Control.DeepSeq Methods rnf :: Identity a -> ()
Unbox a => Unbox (Identity a) |
Instance details Defined in Data.Vector.Unboxed.Base
Prim a => Prim (Identity a) |

Instance details

Defined in Data.Primitive.Types

Methods

sizeOf# :: Identity a -> Int#

alignment# :: Identity a -> Int#

indexByteArray# :: ByteArray# -> Int# -> Identity a

readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Identity a #)

writeByteArray# :: MutableByteArray# s -> Int# -> Identity a -> State# s -> State# s

setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Identity a -> State# s -> State# s

indexOffAddr# :: Addr# -> Int# -> Identity a

readOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Identity a #)

writeOffAddr# :: Addr# -> Int# -> Identity a -> State# s -> State# s

setOffAddr# :: Addr# -> Int# -> Int# -> Identity a -> State# s -> State# s

Wrapped (Identity a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Identity a) Source # Methods _Wrapped' :: Iso' (Identity a) (Unwrapped (Identity a)) Source #
Ixed (Identity a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Identity a) -> Traversal' (Identity a) (IxValue (Identity a)) Source #
Generic1 Identity |
Instance details Defined in Data.Functor.Identity Associated Types type Rep1 Identity :: k -> Type Methods from1 :: forall (a :: k). Identity a -> Rep1 Identity a to1 :: forall (a :: k). Rep1 Identity a -> Identity a
t ~ Identity b => Rewrapped (Identity a) t Source # |
Instance details Defined in Control.Lens.Wrapped
Field1 (Identity a) (Identity b) a b Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (Identity a) (Identity b) a b Source #

Each (Identity a) (Identity b) a b Source #

    each :: Traversal (Identity a) (Identity b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Identity a) (Identity b) a b Source #
Sieve ((->) :: Type -> Type -> Type) Identity |
Instance details Defined in Data.Profunctor.Sieve Methods sieve :: (a -> b) -> a -> Identity b Source #
Cosieve ((->) :: Type -> Type -> Type) Identity |
Instance details Defined in Data.Profunctor.Sieve Methods cosieve :: (a -> b) -> Identity a -> b Source #
type Rep Identity |
Instance details Defined in Data.Functor.Rep type Rep Identity = ()
newtype MVector s (Identity a) |
Instance details Defined in Data.Vector.Unboxed.Base newtype MVector s (Identity a) = MV_Identity (MVector s a)
type Rep (Identity a) |
Instance details Defined in Data.Functor.Identity type Rep (Identity a) = D1 ('MetaData "Identity" "Data.Functor.Identity" "base" 'True) (C1 ('MetaCons "Identity" 'PrefixI 'True) (S1 ('MetaSel ('Just "runIdentity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
newtype Vector (Identity a) |
Instance details Defined in Data.Vector.Unboxed.Base newtype Vector (Identity a) = V_Identity (Vector a)
type Unwrapped (Identity a) Source # |
Instance details Defined in Control.Lens.Wrapped type Unwrapped (Identity a) = a
type IxValue (Identity a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Identity a) = a
type Index (Identity a) Source # |
Instance details Defined in Control.Lens.At type Index (Identity a) = ()
type Rep1 Identity |
Instance details Defined in Data.Functor.Identity type Rep1 Identity = D1 ('MetaData "Identity" "Data.Functor.Identity" "base" 'True) (C1 ('MetaCons "Identity" 'PrefixI 'True) (S1 ('MetaSel ('Just "runIdentity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))

data (a :: k) :~: (b :: k) where #

Constructors

Refl :: forall k (a :: k). a :~: a |

#### Instances

Instances details

Category ((:~:) :: k -> k -> Type) |
Instance details Defined in Control.Category Methods id :: forall (a :: k0). a :~: a (.) :: forall (b :: k0) (c :: k0) (a :: k0). (b :~: c) -> (a :~: b) -> a :~: c
Semigroupoid ((:~:) :: k -> k -> Type) |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k0) (k1 :: k0) (i :: k0). (j :~: k1) -> (i :~: j) -> i :~: k1 Source #
TestEquality ((:~:) a :: k -> Type) |
Instance details Defined in Data.Type.Equality Methods testEquality :: forall (a0 :: k0) (b :: k0). (a :~: a0) -> (a :~: b) -> Maybe (a0 :~: b)
TestCoercion ((:~:) a :: k -> Type) |
Instance details Defined in Data.Type.Coercion Methods testCoercion :: forall (a0 :: k0) (b :: k0). (a :~: a0) -> (a :~: b) -> Maybe (Coercion a0 b)
NFData2 ((:~:) :: Type -> Type -> Type) |
Instance details Defined in Control.DeepSeq Methods liftRnf2 :: (a -> ()) -> (b -> ()) -> (a :~: b) -> ()
NFData1 ((:~:) a) |
Instance details Defined in Control.DeepSeq Methods liftRnf :: (a0 -> ()) -> (a :~: a0) -> ()
a ~ b => Bounded (a :~: b) |
Instance details Defined in Data.Type.Equality Methods minBound :: a :~: b maxBound :: a :~: b
a ~ b => Enum (a :~: b) |
Instance details Defined in Data.Type.Equality Methods succ :: (a :~: b) -> a :~: b pred :: (a :~: b) -> a :~: b toEnum :: Int -> a :~: b fromEnum :: (a :~: b) -> Int enumFrom :: (a :~: b) -> [a :~: b] enumFromThen :: (a :~: b) -> (a :~: b) -> [a :~: b] enumFromTo :: (a :~: b) -> (a :~: b) -> [a :~: b] enumFromThenTo :: (a :~: b) -> (a :~: b) -> (a :~: b) -> [a :~: b]
Eq (a :~: b) |
Instance details Defined in Data.Type.Equality Methods (==) :: (a :~: b) -> (a :~: b) -> Bool (/=) :: (a :~: b) -> (a :~: b) -> Bool
(a ~ b, Data a) => Data (a :~: b) |

Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> (a :~: b) -> c (a :~: b)

gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (a :~: b)

toConstr :: (a :~: b) -> Constr

dataTypeOf :: (a :~: b) -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (a :~: b))

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (a :~: b))

gmapT :: (forall b0. Data b0 => b0 -> b0) -> (a :~: b) -> a :~: b

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> (a :~: b) -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> (a :~: b) -> r

gmapQ :: (forall d. Data d => d -> u) -> (a :~: b) -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> (a :~: b) -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> (a :~: b) -> m (a :~: b)

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> (a :~: b) -> m (a :~: b)

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> (a :~: b) -> m (a :~: b)

Ord (a :~: b) |
Instance details Defined in Data.Type.Equality Methods compare :: (a :~: b) -> (a :~: b) -> Ordering (<) :: (a :~: b) -> (a :~: b) -> Bool (<=) :: (a :~: b) -> (a :~: b) -> Bool (>) :: (a :~: b) -> (a :~: b) -> Bool (>=) :: (a :~: b) -> (a :~: b) -> Bool max :: (a :~: b) -> (a :~: b) -> a :~: b min :: (a :~: b) -> (a :~: b) -> a :~: b
a ~ b => Read (a :~: b) |
Instance details Defined in Data.Type.Equality Methods readsPrec :: Int -> ReadS (a :~: b) readList :: ReadS [a :~: b] readPrec :: ReadPrec (a :~: b) readListPrec :: ReadPrec [a :~: b]
Show (a :~: b) |
Instance details Defined in Data.Type.Equality Methods showsPrec :: Int -> (a :~: b) -> ShowS show :: (a :~: b) -> String showList :: [a :~: b] -> ShowS
NFData (a :~: b) |
Instance details Defined in Control.DeepSeq Methods rnf :: (a :~: b) -> ()

newtype Const a (b :: k) #

Constructors

Const |

Fields

- getConst :: a

#### Instances

Instances details

Generic1 (Const a :: k -> Type) |
Instance details Defined in Data.Functor.Const Associated Types type Rep1 (Const a) :: k -> Type Methods from1 :: forall (a0 :: k0). Const a a0 -> Rep1 (Const a) a0 to1 :: forall (a0 :: k0). Rep1 (Const a) a0 -> Const a a0
Unbox a => Vector Vector (Const a b) |

Instance details

Defined in Data.Vector.Unboxed.Base

Methods

basicUnsafeFreeze :: PrimMonad m => Mutable Vector (PrimState m) (Const a b) -> m (Vector (Const a b)) Source #

basicUnsafeThaw :: PrimMonad m => Vector (Const a b) -> m (Mutable Vector (PrimState m) (Const a b)) Source #

basicLength :: Vector (Const a b) -> Int Source #

basicUnsafeSlice :: Int -> Int -> Vector (Const a b) -> Vector (Const a b) Source #

basicUnsafeIndexM :: Monad m => Vector (Const a b) -> Int -> m (Const a b) Source #

basicUnsafeCopy :: PrimMonad m => Mutable Vector (PrimState m) (Const a b) -> Vector (Const a b) -> m () Source #

elemseq :: Vector (Const a b) -> Const a b -> b0 -> b0 Source #

Unbox a => MVector MVector (Const a b) |

Instance details

Defined in Data.Vector.Unboxed.Base

Methods

basicLength :: MVector s (Const a b) -> Int Source #

basicUnsafeSlice :: Int -> Int -> MVector s (Const a b) -> MVector s (Const a b) Source #

basicOverlaps :: MVector s (Const a b) -> MVector s (Const a b) -> Bool Source #

basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (Const a b)) Source #

basicInitialize :: PrimMonad m => MVector (PrimState m) (Const a b) -> m () Source #

basicUnsafeReplicate :: PrimMonad m => Int -> Const a b -> m (MVector (PrimState m) (Const a b)) Source #

basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (Const a b) -> Int -> m (Const a b) Source #

basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (Const a b) -> Int -> Const a b -> m () Source #

basicClear :: PrimMonad m => MVector (PrimState m) (Const a b) -> m () Source #

basicSet :: PrimMonad m => MVector (PrimState m) (Const a b) -> Const a b -> m () Source #

basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (Const a b) -> MVector (PrimState m) (Const a b) -> m () Source #

basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (Const a b) -> MVector (PrimState m) (Const a b) -> m () Source #

basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (Const a b) -> Int -> m (MVector (PrimState m) (Const a b)) Source #

Show2 (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Functor.Classes Methods liftShowsPrec2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> Int -> Const a b -> ShowS liftShowList2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> [Const a b] -> ShowS
Read2 (Const :: Type -> Type -> Type) |

Instance details

Defined in Data.Functor.Classes

Methods

liftReadsPrec2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> Int -> ReadS (Const a b)

liftReadList2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> ReadS [Const a b]

liftReadPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec (Const a b)

liftReadListPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec [Const a b]

Ord2 (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Functor.Classes Methods liftCompare2 :: (a -> b -> Ordering) -> (c -> d -> Ordering) -> Const a c -> Const b d -> Ordering
Eq2 (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Functor.Classes Methods liftEq2 :: (a -> b -> Bool) -> (c -> d -> Bool) -> Const a c -> Const b d -> Bool
Bifunctor (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Bifunctor Methods bimap :: (a -> b) -> (c -> d) -> Const a c -> Const b d # first :: (a -> b) -> Const a c -> Const b c # second :: (b -> c) -> Const a b -> Const a c #
Biapplicative (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Biapplicative Methods bipure :: a -> b -> Const a b Source # (<<*>>) :: Const (a -> b) (c -> d) -> Const a c -> Const b d Source # biliftA2 :: (a -> b -> c) -> (d -> e -> f) -> Const a d -> Const b e -> Const c f Source # (*>>) :: Const a b -> Const c d -> Const c d Source # (<<*) :: Const a b -> Const c d -> Const a b Source #
Hashable2 (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Hashable.Class Methods liftHashWithSalt2 :: (Int -> a -> Int) -> (Int -> b -> Int) -> Int -> Const a b -> Int Source #
Bitraversable1 (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods bitraverse1 :: Apply f => (a -> f b) -> (c -> f d) -> Const a c -> f (Const b d) Source # bisequence1 :: Apply f => Const (f a) (f b) -> f (Const a b) Source #
Bifoldable1 (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Semigroup.Foldable.Class Methods bifold1 :: Semigroup m => Const m m -> m Source # bifoldMap1 :: Semigroup m => (a -> m) -> (b -> m) -> Const a b -> m Source #
Biapply (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Functor.Bind.Class Methods (<<.>>) :: Const (a -> b) (c -> d) -> Const a c -> Const b d Source # (.>>) :: Const a b -> Const c d -> Const c d Source # (<<.) :: Const a b -> Const c d -> Const a b Source #
Bifoldable (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Bifoldable Methods bifold :: Monoid m => Const m m -> m bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> Const a b -> m bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Const a b -> c bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Const a b -> c
Bitraversable (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Bitraversable Methods bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Const a b -> f (Const c d)
NFData2 (Const :: Type -> Type -> Type) |
Instance details Defined in Control.DeepSeq Methods liftRnf2 :: (a -> ()) -> (b -> ()) -> Const a b -> ()
Semigroupoid (Const :: Type -> Type -> Type) |
Instance details Defined in Data.Semigroupoid Methods o :: forall (j :: k) (k1 :: k) (i :: k). Const j k1 -> Const i j -> Const i k1 Source #
Sieve (Forget r) (Const r :: Type -> Type) |
Instance details Defined in Data.Profunctor.Sieve Methods sieve :: Forget r a b -> a -> Const r b Source #
Functor (Const m :: Type -> Type) |
Instance details Defined in Data.Functor.Const Methods fmap :: (a -> b) -> Const m a -> Const m b # (<$) :: a -> Const m b -> Const m a #
Monoid m => Applicative (Const m :: Type -> Type) |
Instance details Defined in Data.Functor.Const Methods pure :: a -> Const m a (<*>) :: Const m (a -> b) -> Const m a -> Const m b liftA2 :: (a -> b -> c) -> Const m a -> Const m b -> Const m c (*>) :: Const m a -> Const m b -> Const m b (<*) :: Const m a -> Const m b -> Const m a
Foldable (Const m :: Type -> Type) |

Instance details

Defined in Data.Functor.Const

Methods

fold :: Monoid m0 => Const m m0 -> m0

foldMap :: Monoid m0 => (a -> m0) -> Const m a -> m0

foldMap' :: Monoid m0 => (a -> m0) -> Const m a -> m0

foldr :: (a -> b -> b) -> b -> Const m a -> b

foldr' :: (a -> b -> b) -> b -> Const m a -> b

foldl :: (b -> a -> b) -> b -> Const m a -> b

foldl' :: (b -> a -> b) -> b -> Const m a -> b

foldr1 :: (a -> a -> a) -> Const m a -> a

foldl1 :: (a -> a -> a) -> Const m a -> a

toList :: Const m a -> [a]

null :: Const m a -> Bool

length :: Const m a -> Int

elem :: Eq a => a -> Const m a -> Bool

maximum :: Ord a => Const m a -> a

minimum :: Ord a => Const m a -> a

sum :: Num a => Const m a -> a

product :: Num a => Const m a -> a

Traversable (Const m :: Type -> Type) |
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> Const m a -> f (Const m b) # sequenceA :: Applicative f => Const m (f a) -> f (Const m a) mapM :: Monad m0 => (a -> m0 b) -> Const m a -> m0 (Const m b) sequence :: Monad m0 => Const m (m0 a) -> m0 (Const m a)
Show a => Show1 (Const a :: Type -> Type) |
Instance details Defined in Data.Functor.Classes Methods liftShowsPrec :: (Int -> a0 -> ShowS) -> ([a0] -> ShowS) -> Int -> Const a a0 -> ShowS liftShowList :: (Int -> a0 -> ShowS) -> ([a0] -> ShowS) -> [Const a a0] -> ShowS
Read a => Read1 (Const a :: Type -> Type) |
Instance details Defined in Data.Functor.Classes Methods liftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (Const a a0) liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [Const a a0] liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (Const a a0) liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [Const a a0]
Ord a => Ord1 (Const a :: Type -> Type) |
Instance details Defined in Data.Functor.Classes Methods liftCompare :: (a0 -> b -> Ordering) -> Const a a0 -> Const a b -> Ordering
Eq a => Eq1 (Const a :: Type -> Type) |
Instance details Defined in Data.Functor.Classes Methods liftEq :: (a0 -> b -> Bool) -> Const a a0 -> Const a b -> Bool
Contravariant (Const a :: Type -> Type) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a0 -> b) -> Const a b -> Const a a0 # (>$) :: b -> Const a b -> Const a a0 #
Hashable a => Hashable1 (Const a :: Type -> Type) |
Instance details Defined in Data.Hashable.Class Methods liftHashWithSalt :: (Int -> a0 -> Int) -> Int -> Const a a0 -> Int Source #
Semigroup m => Apply (Const m :: Type -> Type) | A 'Const m' is not `Applicative` unless its `m` is a `Monoid`, but it is an instance of `Apply`
Instance details Defined in Data.Functor.Bind.Class Methods (<.>) :: Const m (a -> b) -> Const m a -> Const m b Source # (.>) :: Const m a -> Const m b -> Const m b Source # (<.) :: Const m a -> Const m b -> Const m a Source # liftF2 :: (a -> b -> c) -> Const m a -> Const m b -> Const m c Source #
NFData a => NFData1 (Const a :: Type -> Type) |
Instance details Defined in Control.DeepSeq Methods liftRnf :: (a0 -> ()) -> Const a a0 -> ()
ComonadCofree (Const b :: Type -> Type) ((,) b) |
Instance details Defined in Control.Comonad.Cofree.Class Methods unwrap :: (b, a) -> Const b (b, a) Source #
Bounded a => Bounded (Const a b) |
Instance details Defined in Data.Functor.Const Methods minBound :: Const a b maxBound :: Const a b
Enum a => Enum (Const a b) |
Instance details Defined in Data.Functor.Const Methods succ :: Const a b -> Const a b pred :: Const a b -> Const a b toEnum :: Int -> Const a b fromEnum :: Const a b -> Int enumFrom :: Const a b -> [Const a b] enumFromThen :: Const a b -> Const a b -> [Const a b] enumFromTo :: Const a b -> Const a b -> [Const a b] enumFromThenTo :: Const a b -> Const a b -> Const a b -> [Const a b]
Eq a => Eq (Const a b) |
Instance details Defined in Data.Functor.Const Methods (==) :: Const a b -> Const a b -> Bool (/=) :: Const a b -> Const a b -> Bool
Floating a => Floating (Const a b) |

Instance details

Defined in Data.Functor.Const

Methods

pi :: Const a b

exp :: Const a b -> Const a b

log :: Const a b -> Const a b

sqrt :: Const a b -> Const a b

(**) :: Const a b -> Const a b -> Const a b

logBase :: Const a b -> Const a b -> Const a b

sin :: Const a b -> Const a b

cos :: Const a b -> Const a b

tan :: Const a b -> Const a b

asin :: Const a b -> Const a b

acos :: Const a b -> Const a b

atan :: Const a b -> Const a b

sinh :: Const a b -> Const a b

cosh :: Const a b -> Const a b

tanh :: Const a b -> Const a b

asinh :: Const a b -> Const a b

acosh :: Const a b -> Const a b

atanh :: Const a b -> Const a b

log1p :: Const a b -> Const a b

expm1 :: Const a b -> Const a b

log1pexp :: Const a b -> Const a b

log1mexp :: Const a b -> Const a b

Fractional a => Fractional (Const a b) |
Instance details Defined in Data.Functor.Const Methods (/) :: Const a b -> Const a b -> Const a b recip :: Const a b -> Const a b fromRational :: Rational -> Const a b
Integral a => Integral (Const a b) |
Instance details Defined in Data.Functor.Const Methods quot :: Const a b -> Const a b -> Const a b rem :: Const a b -> Const a b -> Const a b div :: Const a b -> Const a b -> Const a b mod :: Const a b -> Const a b -> Const a b quotRem :: Const a b -> Const a b -> (Const a b, Const a b) divMod :: Const a b -> Const a b -> (Const a b, Const a b) toInteger :: Const a b -> Integer
(Typeable k, Data a, Typeable b) => Data (Const a b) |

Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Const a b -> c (Const a b)

gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Const a b)

toConstr :: Const a b -> Constr

dataTypeOf :: Const a b -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Const a b))

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Const a b))

gmapT :: (forall b0. Data b0 => b0 -> b0) -> Const a b -> Const a b

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r

gmapQ :: (forall d. Data d => d -> u) -> Const a b -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Const a b -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b)

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b)

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b)

Num a => Num (Const a b) |
Instance details Defined in Data.Functor.Const Methods (+) :: Const a b -> Const a b -> Const a b (-) :: Const a b -> Const a b -> Const a b (*) :: Const a b -> Const a b -> Const a b negate :: Const a b -> Const a b abs :: Const a b -> Const a b signum :: Const a b -> Const a b fromInteger :: Integer -> Const a b
Ord a => Ord (Const a b) |
Instance details Defined in Data.Functor.Const Methods compare :: Const a b -> Const a b -> Ordering (<) :: Const a b -> Const a b -> Bool (<=) :: Const a b -> Const a b -> Bool (>) :: Const a b -> Const a b -> Bool (>=) :: Const a b -> Const a b -> Bool max :: Const a b -> Const a b -> Const a b min :: Const a b -> Const a b -> Const a b
Read a => Read (Const a b) |
Instance details Defined in Data.Functor.Const Methods readsPrec :: Int -> ReadS (Const a b) readList :: ReadS [Const a b] readPrec :: ReadPrec (Const a b) readListPrec :: ReadPrec [Const a b]
Real a => Real (Const a b) |
Instance details Defined in Data.Functor.Const Methods toRational :: Const a b -> Rational
RealFloat a => RealFloat (Const a b) |

Instance details

Defined in Data.Functor.Const

Methods

floatRadix :: Const a b -> Integer

floatDigits :: Const a b -> Int

floatRange :: Const a b -> (Int, Int)

decodeFloat :: Const a b -> (Integer, Int)

encodeFloat :: Integer -> Int -> Const a b

exponent :: Const a b -> Int

significand :: Const a b -> Const a b

scaleFloat :: Int -> Const a b -> Const a b

isNaN :: Const a b -> Bool

isInfinite :: Const a b -> Bool

isDenormalized :: Const a b -> Bool

isNegativeZero :: Const a b -> Bool

isIEEE :: Const a b -> Bool

atan2 :: Const a b -> Const a b -> Const a b

RealFrac a => RealFrac (Const a b) |
Instance details Defined in Data.Functor.Const Methods properFraction :: Integral b0 => Const a b -> (b0, Const a b) truncate :: Integral b0 => Const a b -> b0 round :: Integral b0 => Const a b -> b0 ceiling :: Integral b0 => Const a b -> b0 floor :: Integral b0 => Const a b -> b0
Show a => Show (Const a b) |
Instance details Defined in Data.Functor.Const Methods showsPrec :: Int -> Const a b -> ShowS show :: Const a b -> String showList :: [Const a b] -> ShowS
Ix a => Ix (Const a b) |
Instance details Defined in Data.Functor.Const Methods range :: (Const a b, Const a b) -> [Const a b] index :: (Const a b, Const a b) -> Const a b -> Int unsafeIndex :: (Const a b, Const a b) -> Const a b -> Int inRange :: (Const a b, Const a b) -> Const a b -> Bool rangeSize :: (Const a b, Const a b) -> Int unsafeRangeSize :: (Const a b, Const a b) -> Int
Generic (Const a b) |
Instance details Defined in Data.Functor.Const Associated Types type Rep (Const a b) :: Type -> Type Methods from :: Const a b -> Rep (Const a b) x to :: Rep (Const a b) x -> Const a b
Semigroup a => Semigroup (Const a b) |
Instance details Defined in Data.Functor.Const Methods (<>) :: Const a b -> Const a b -> Const a b sconcat :: NonEmpty (Const a b) -> Const a b stimes :: Integral b0 => b0 -> Const a b -> Const a b
Monoid a => Monoid (Const a b) |
Instance details Defined in Data.Functor.Const Methods mempty :: Const a b mappend :: Const a b -> Const a b -> Const a b mconcat :: [Const a b] -> Const a b
Storable a => Storable (Const a b) |

Instance details

Defined in Data.Functor.Const

Methods

sizeOf :: Const a b -> Int

alignment :: Const a b -> Int

peekElemOff :: Ptr (Const a b) -> Int -> IO (Const a b)

pokeElemOff :: Ptr (Const a b) -> Int -> Const a b -> IO ()

peekByteOff :: Ptr b0 -> Int -> IO (Const a b)

pokeByteOff :: Ptr b0 -> Int -> Const a b -> IO ()

peek :: Ptr (Const a b) -> IO (Const a b)

poke :: Ptr (Const a b) -> Const a b -> IO ()

FiniteBits a => FiniteBits (Const a b) |
Instance details Defined in Data.Functor.Const Methods finiteBitSize :: Const a b -> Int countLeadingZeros :: Const a b -> Int countTrailingZeros :: Const a b -> Int
Bits a => Bits (Const a b) |

Instance details

Defined in Data.Functor.Const

Methods

(.&.) :: Const a b -> Const a b -> Const a b

(.|.) :: Const a b -> Const a b -> Const a b

xor :: Const a b -> Const a b -> Const a b

complement :: Const a b -> Const a b

shift :: Const a b -> Int -> Const a b

rotate :: Const a b -> Int -> Const a b

zeroBits :: Const a b

bit :: Int -> Const a b

setBit :: Const a b -> Int -> Const a b

clearBit :: Const a b -> Int -> Const a b

complementBit :: Const a b -> Int -> Const a b

testBit :: Const a b -> Int -> Bool

bitSizeMaybe :: Const a b -> Maybe Int

bitSize :: Const a b -> Int

isSigned :: Const a b -> Bool

shiftL :: Const a b -> Int -> Const a b

unsafeShiftL :: Const a b -> Int -> Const a b

shiftR :: Const a b -> Int -> Const a b

unsafeShiftR :: Const a b -> Int -> Const a b

rotateL :: Const a b -> Int -> Const a b

rotateR :: Const a b -> Int -> Const a b

popCount :: Const a b -> Int

Hashable a => Hashable (Const a b) |
Instance details Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> Const a b -> Int Source # hash :: Const a b -> Int Source #
NFData a => NFData (Const a b) |
Instance details Defined in Control.DeepSeq Methods rnf :: Const a b -> ()
Unbox a => Unbox (Const a b) |
Instance details Defined in Data.Vector.Unboxed.Base
Prim a => Prim (Const a b) |

Instance details

Defined in Data.Primitive.Types

Methods

sizeOf# :: Const a b -> Int#

alignment# :: Const a b -> Int#

indexByteArray# :: ByteArray# -> Int# -> Const a b

readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Const a b #)

writeByteArray# :: MutableByteArray# s -> Int# -> Const a b -> State# s -> State# s

setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Const a b -> State# s -> State# s

indexOffAddr# :: Addr# -> Int# -> Const a b

readOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Const a b #)

writeOffAddr# :: Addr# -> Int# -> Const a b -> State# s -> State# s

setOffAddr# :: Addr# -> Int# -> Int# -> Const a b -> State# s -> State# s

Wrapped (Const a x) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Const a x) Source # Methods _Wrapped' :: Iso' (Const a x) (Unwrapped (Const a x)) Source #
t ~ Const a' x' => Rewrapped (Const a x) t Source # |
Instance details Defined in Control.Lens.Wrapped
type Rep1 (Const a :: k -> Type) |
Instance details Defined in Data.Functor.Const type Rep1 (Const a :: k -> Type) = D1 ('MetaData "Const" "Data.Functor.Const" "base" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
newtype MVector s (Const a b) |
Instance details Defined in Data.Vector.Unboxed.Base newtype MVector s (Const a b) = MV_Const (MVector s a)
type Rep (Const a b) |
Instance details Defined in Data.Functor.Const type Rep (Const a b) = D1 ('MetaData "Const" "Data.Functor.Const" "base" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
newtype Vector (Const a b) |
Instance details Defined in Data.Vector.Unboxed.Base newtype Vector (Const a b) = V_Const (Vector a)
type Unwrapped (Const a x) Source # |
Instance details Defined in Control.Lens.Wrapped type Unwrapped (Const a x) = a

class Contravariant (f :: Type -> Type) where #

Minimal complete definition

contramap

Methods

contramap :: (a -> b) -> f b -> f a #

(>$) :: b -> f b -> f a #

#### Instances

Instances details

Contravariant Equivalence |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Equivalence b -> Equivalence a # (>$) :: b -> Equivalence b -> Equivalence a #
Contravariant Comparison |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Comparison b -> Comparison a # (>$) :: b -> Comparison b -> Comparison a #
Contravariant Predicate |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Predicate b -> Predicate a # (>$) :: b -> Predicate b -> Predicate a #
Contravariant (V1 :: Type -> Type) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> V1 b -> V1 a # (>$) :: b -> V1 b -> V1 a #
Contravariant (U1 :: Type -> Type) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> U1 b -> U1 a # (>$) :: b -> U1 b -> U1 a #
Contravariant (Proxy :: Type -> Type) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Proxy b -> Proxy a # (>$) :: b -> Proxy b -> Proxy a #
Contravariant m => Contravariant (MaybeT m) |
Instance details Defined in Control.Monad.Trans.Maybe Methods contramap :: (a -> b) -> MaybeT m b -> MaybeT m a # (>$) :: b -> MaybeT m b -> MaybeT m a #
Contravariant (Op a) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a0 -> b) -> Op a b -> Op a a0 # (>$) :: b -> Op a b -> Op a a0 #
Contravariant m => Contravariant (ListT m) |
Instance details Defined in Control.Monad.Trans.List Methods contramap :: (a -> b) -> ListT m b -> ListT m a # (>$) :: b -> ListT m b -> ListT m a #
Contravariant f => Contravariant (Indexing64 f) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods contramap :: (a -> b) -> Indexing64 f b -> Indexing64 f a # (>$) :: b -> Indexing64 f b -> Indexing64 f a #
Contravariant f => Contravariant (Indexing f) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods contramap :: (a -> b) -> Indexing f b -> Indexing f a # (>$) :: b -> Indexing f b -> Indexing f a #
Contravariant f => Contravariant (Rec1 f) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Rec1 f b -> Rec1 f a # (>$) :: b -> Rec1 f b -> Rec1 f a #
Contravariant f => Contravariant (Alt f) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Alt f b -> Alt f a # (>$) :: b -> Alt f b -> Alt f a #
Contravariant (Const a :: Type -> Type) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a0 -> b) -> Const a b -> Const a a0 # (>$) :: b -> Const a b -> Const a a0 #
Contravariant f => Contravariant (IdentityT f) |
Instance details Defined in Control.Monad.Trans.Identity Methods contramap :: (a -> b) -> IdentityT f b -> IdentityT f a # (>$) :: b -> IdentityT f b -> IdentityT f a #
(Functor f, Contravariant g) => Contravariant (ComposeFC f g) |
Instance details Defined in Data.Functor.Contravariant.Compose Methods contramap :: (a -> b) -> ComposeFC f g b -> ComposeFC f g a # (>$) :: b -> ComposeFC f g b -> ComposeFC f g a #
(Contravariant f, Functor g) => Contravariant (ComposeCF f g) |
Instance details Defined in Data.Functor.Contravariant.Compose Methods contramap :: (a -> b) -> ComposeCF f g b -> ComposeCF f g a # (>$) :: b -> ComposeCF f g b -> ComposeCF f g a #
Contravariant m => Contravariant (ExceptT e m) |
Instance details Defined in Control.Monad.Trans.Except Methods contramap :: (a -> b) -> ExceptT e m b -> ExceptT e m a # (>$) :: b -> ExceptT e m b -> ExceptT e m a #
Contravariant f => Contravariant (Star f a) |
Instance details Defined in Data.Profunctor.Types Methods contramap :: (a0 -> b) -> Star f a b -> Star f a a0 # (>$) :: b -> Star f a b -> Star f a a0 #
Contravariant (Forget r a) |
Instance details Defined in Data.Profunctor.Types Methods contramap :: (a0 -> b) -> Forget r a b -> Forget r a a0 # (>$) :: b -> Forget r a b -> Forget r a a0 #
Contravariant m => Contravariant (ErrorT e m) |
Instance details Defined in Control.Monad.Trans.Error Methods contramap :: (a -> b) -> ErrorT e m b -> ErrorT e m a # (>$) :: b -> ErrorT e m b -> ErrorT e m a #
Contravariant f => Contravariant (AlongsideRight f a) Source # |
Instance details Defined in Control.Lens.Internal.Getter Methods contramap :: (a0 -> b) -> AlongsideRight f a b -> AlongsideRight f a a0 # (>$) :: b -> AlongsideRight f a b -> AlongsideRight f a a0 #
Contravariant f => Contravariant (AlongsideLeft f b) Source # |
Instance details Defined in Control.Lens.Internal.Getter Methods contramap :: (a -> b0) -> AlongsideLeft f b b0 -> AlongsideLeft f b a # (>$) :: b0 -> AlongsideLeft f b b0 -> AlongsideLeft f b a #
Contravariant f => Contravariant (Backwards f) |
Instance details Defined in Control.Applicative.Backwards Methods contramap :: (a -> b) -> Backwards f b -> Backwards f a # (>$) :: b -> Backwards f b -> Backwards f a #
Contravariant f => Contravariant (Reverse f) |
Instance details Defined in Data.Functor.Reverse Methods contramap :: (a -> b) -> Reverse f b -> Reverse f a # (>$) :: b -> Reverse f b -> Reverse f a #
Contravariant (Constant a :: Type -> Type) |
Instance details Defined in Data.Functor.Constant Methods contramap :: (a0 -> b) -> Constant a b -> Constant a a0 # (>$) :: b -> Constant a b -> Constant a a0 #
Contravariant m => Contravariant (ReaderT r m) |
Instance details Defined in Control.Monad.Trans.Reader Methods contramap :: (a -> b) -> ReaderT r m b -> ReaderT r m a # (>$) :: b -> ReaderT r m b -> ReaderT r m a #
Contravariant m => Contravariant (StateT s m) |
Instance details Defined in Control.Monad.Trans.State.Lazy Methods contramap :: (a -> b) -> StateT s m b -> StateT s m a # (>$) :: b -> StateT s m b -> StateT s m a #
Contravariant m => Contravariant (StateT s m) |
Instance details Defined in Control.Monad.Trans.State.Strict Methods contramap :: (a -> b) -> StateT s m b -> StateT s m a # (>$) :: b -> StateT s m b -> StateT s m a #
Contravariant m => Contravariant (WriterT w m) |
Instance details Defined in Control.Monad.Trans.Writer.Lazy Methods contramap :: (a -> b) -> WriterT w m b -> WriterT w m a # (>$) :: b -> WriterT w m b -> WriterT w m a #
Contravariant m => Contravariant (WriterT w m) |
Instance details Defined in Control.Monad.Trans.Writer.Strict Methods contramap :: (a -> b) -> WriterT w m b -> WriterT w m a # (>$) :: b -> WriterT w m b -> WriterT w m a #
Contravariant (Effect m r) Source # |
Instance details Defined in Control.Lens.Internal.Zoom Methods contramap :: (a -> b) -> Effect m r b -> Effect m r a # (>$) :: b -> Effect m r b -> Effect m r a #
Contravariant (K1 i c :: Type -> Type) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> K1 i c b -> K1 i c a # (>$) :: b -> K1 i c b -> K1 i c a #
(Contravariant f, Contravariant g) => Contravariant (f :+: g) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> (f :+: g) b -> (f :+: g) a # (>$) :: b -> (f :+: g) b -> (f :+: g) a #
(Contravariant f, Contravariant g) => Contravariant (f :*: g) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> (f :*: g) b -> (f :*: g) a # (>$) :: b -> (f :*: g) b -> (f :*: g) a #
(Contravariant f, Contravariant g) => Contravariant (Sum f g) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Sum f g b -> Sum f g a # (>$) :: b -> Sum f g b -> Sum f g a #
(Contravariant f, Contravariant g) => Contravariant (Product f g) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Product f g b -> Product f g a # (>$) :: b -> Product f g b -> Product f g a #
Contravariant f => Contravariant (M1 i c f) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> M1 i c f b -> M1 i c f a # (>$) :: b -> M1 i c f b -> M1 i c f a #
(Functor f, Contravariant g) => Contravariant (f :.: g) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> (f :.: g) b -> (f :.: g) a # (>$) :: b -> (f :.: g) b -> (f :.: g) a #
(Functor f, Contravariant g) => Contravariant (Compose f g) |
Instance details Defined in Data.Functor.Contravariant Methods contramap :: (a -> b) -> Compose f g b -> Compose f g a # (>$) :: b -> Compose f g b -> Compose f g a #
Contravariant m => Contravariant (RWST r w s m) |
Instance details Defined in Control.Monad.Trans.RWS.Lazy Methods contramap :: (a -> b) -> RWST r w s m b -> RWST r w s m a # (>$) :: b -> RWST r w s m b -> RWST r w s m a #
Contravariant m => Contravariant (RWST r w s m) |
Instance details Defined in Control.Monad.Trans.RWS.Strict Methods contramap :: (a -> b) -> RWST r w s m b -> RWST r w s m a # (>$) :: b -> RWST r w s m b -> RWST r w s m a #
(Profunctor p, Contravariant g) => Contravariant (PretextT p g a b) Source # |
Instance details Defined in Control.Lens.Internal.Context Methods contramap :: (a0 -> b0) -> PretextT p g a b b0 -> PretextT p g a b a0 # (>$) :: b0 -> PretextT p g a b b0 -> PretextT p g a b a0 #
(Profunctor p, Contravariant g) => Contravariant (BazaarT1 p g a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods contramap :: (a0 -> b0) -> BazaarT1 p g a b b0 -> BazaarT1 p g a b a0 # (>$) :: b0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b a0 #
(Profunctor p, Contravariant g) => Contravariant (BazaarT p g a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods contramap :: (a0 -> b0) -> BazaarT p g a b b0 -> BazaarT p g a b a0 # (>$) :: b0 -> BazaarT p g a b b0 -> BazaarT p g a b a0 #
Contravariant f => Contravariant (TakingWhile p f a b) Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods contramap :: (a0 -> b0) -> TakingWhile p f a b b0 -> TakingWhile p f a b a0 # (>$) :: b0 -> TakingWhile p f a b b0 -> TakingWhile p f a b a0 #
Contravariant (EffectRWS w st m s) Source # |
Instance details Defined in Control.Lens.Internal.Zoom Methods contramap :: (a -> b) -> EffectRWS w st m s b -> EffectRWS w st m s a # (>$) :: b -> EffectRWS w st m s b -> EffectRWS w st m s a #

class Profunctor p => Choice (p :: Type -> Type -> Type) where Source #

The generalization of `Costar` of `Functor` that is strong with respect to `Either`.

Note: This is also a notion of strength, except with regards to another monoidal structure that we can choose to equip Hask with: the cocartesian coproduct.

Minimal complete definition

left' | right'

Methods

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

Laws:

    left' ≡ dimap swapE swapE . right' where
      swapE :: Either a b -> Either b a
      swapE = either Right Left
    rmap Left ≡ lmap Left . left'
    lmap (right f) . left' ≡ rmap (right f) . left'
    left' . left' ≡ dimap assocE unassocE . left' where
      assocE :: Either (Either a b) c -> Either a (Either b c)
      assocE (Left (Left a)) = Left a
      assocE (Left (Right b)) = Right (Left b)
      assocE (Right c) = Right (Right c)
      unassocE :: Either a (Either b c) -> Either (Either a b) c
      unassocE (Left a) = Left (Left a)
      unassocE (Right (Left b)) = Left (Right b)
      unassocE (Right (Right c)) = Right c

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

Laws:

    right' ≡ dimap swapE swapE . left' where
      swapE :: Either a b -> Either b a
      swapE = either Right Left
    rmap Right ≡ lmap Right . right'
    lmap (left f) . right' ≡ rmap (left f) . right'
    right' . right' ≡ dimap unassocE assocE . right' where
      assocE :: Either (Either a b) c -> Either a (Either b c)
      assocE (Left (Left a)) = Left a
      assocE (Left (Right b)) = Right (Left b)
      assocE (Right c) = Right (Right c)
      unassocE :: Either a (Either b c) -> Either (Either a b) c
      unassocE (Left a) = Left (Left a)
      unassocE (Right (Left b)) = Left (Right b)
      unassocE (Right (Right c)) = Right c

#### Instances

Instances details

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 #
Choice ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Methods left' :: ReifiedGetter a b -> ReifiedGetter (Either a c) (Either b c) Source # right' :: ReifiedGetter a b -> ReifiedGetter (Either c a) (Either c b) Source #
Monad m => Choice (Kleisli m) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Kleisli m a b -> Kleisli m (Either a c) (Either b c) Source # right' :: Kleisli m a b -> Kleisli m (Either c a) (Either c b) Source #
Profunctor p => Choice (CofreeMapping p) |
Instance details Defined in Data.Profunctor.Mapping Methods left' :: CofreeMapping p a b -> CofreeMapping p (Either a c) (Either b c) Source # right' :: CofreeMapping p a b -> CofreeMapping p (Either c a) (Either c b) Source #
Choice (FreeMapping p) |
Instance details Defined in Data.Profunctor.Mapping Methods left' :: FreeMapping p a b -> FreeMapping p (Either a c) (Either b c) Source # right' :: FreeMapping p a b -> FreeMapping p (Either c a) (Either c b) Source #
Profunctor p => Choice (TambaraSum p) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: TambaraSum p a b -> TambaraSum p (Either a c) (Either b c) Source # right' :: TambaraSum p a b -> TambaraSum p (Either c a) (Either c b) Source #
Choice (PastroSum p) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: PastroSum p a b -> PastroSum p (Either a c) (Either b c) Source # right' :: PastroSum p a b -> PastroSum p (Either c a) (Either c b) Source #
Choice p => Choice (Tambara p) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Tambara p a b -> Tambara p (Either a c) (Either b c) Source # right' :: Tambara p a b -> Tambara p (Either c a) (Either c b) Source #
Applicative f => Choice (Star f) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Star f a b -> Star f (Either a c) (Either b c) Source # right' :: Star f a b -> Star f (Either c a) (Either c b) Source #
ArrowChoice p => Choice (WrappedArrow p) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: WrappedArrow p a b -> WrappedArrow p (Either a c) (Either b c) Source # right' :: WrappedArrow p a b -> WrappedArrow p (Either c a) (Either c b) Source #
Monoid r => Choice (Forget r) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Forget r a b -> Forget r (Either a c) (Either b c) Source # right' :: Forget r a b -> Forget r (Either c a) (Either c b) Source #
Choice (Tagged :: Type -> Type -> Type) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Tagged a b -> Tagged (Either a c) (Either b c) Source # right' :: Tagged a b -> Tagged (Either c a) (Either c b) Source #
Choice (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods left' :: Indexed i a b -> Indexed i (Either a c) (Either b c) Source # right' :: Indexed i a b -> Indexed i (Either c a) (Either c b) Source #
Choice ((->) :: Type -> Type -> Type) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: (a -> b) -> Either a c -> Either b c Source # right' :: (a -> b) -> Either c a -> Either c b Source #
Comonad w => Choice (Cokleisli w) | `extract` approximates `costrength`
Instance details Defined in Data.Profunctor.Choice Methods left' :: Cokleisli w a b -> Cokleisli w (Either a c) (Either b c) Source # right' :: Cokleisli w a b -> Cokleisli w (Either c a) (Either c b) Source #
(Functor f, Choice p) => Choice (Cayley f p) |
Instance details Defined in Data.Profunctor.Cayley Methods left' :: Cayley f p a b -> Cayley f p (Either a c) (Either b c) Source # right' :: Cayley f p a b -> Cayley f p (Either c a) (Either c b) Source #
(Choice p, Choice q) => Choice (Procompose p q) |
Instance details Defined in Data.Profunctor.Composition Methods left' :: Procompose p q a b -> Procompose p q (Either a c) (Either b c) Source # right' :: Procompose p q a b -> Procompose p q (Either c a) (Either c b) Source #
Choice (Market a b) Source # |
Instance details Defined in Control.Lens.Internal.Prism Methods left' :: Market a b a0 b0 -> Market a b (Either a0 c) (Either b0 c) Source # right' :: Market a b a0 b0 -> Market a b (Either c a0) (Either c b0) Source #
Functor f => Choice (Joker f :: Type -> Type -> Type) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Joker f a b -> Joker f (Either a c) (Either b c) Source # right' :: Joker f a b -> Joker f (Either c a) (Either c b) Source #
(Choice p, Choice q) => Choice (Sum p q) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Sum p q a b -> Sum p q (Either a c) (Either b c) Source # right' :: Sum p q a b -> Sum p q (Either c a) (Either c b) Source #
(Choice p, Choice q) => Choice (Product p q) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Product p q a b -> Product p q (Either a c) (Either b c) Source # right' :: Product p q a b -> Product p q (Either c a) (Either c b) Source #
(Functor f, Choice p) => Choice (Tannen f p) |
Instance details Defined in Data.Profunctor.Choice Methods left' :: Tannen f p a b -> Tannen f p (Either a c) (Either b c) Source # right' :: Tannen f p a b -> Tannen f p (Either c a) (Either c b) Source #

class Profunctor (p :: Type -> Type -> Type) where Source #

Formally, the class `Profunctor` represents a profunctor from `Hask` -> `Hask`.

Intuitively it is a bifunctor where the first argument is contravariant and the second argument is covariant.

You can define a `Profunctor` by either defining `dimap` or by defining both `lmap` and `rmap`.

If you supply `dimap`, you should ensure that:

    dimap id id ≡ id

If you supply `lmap` and `rmap`, ensure:

    lmap id ≡ id
    rmap id ≡ id

If you supply both, you should also ensure:

    dimap f g ≡ lmap f . rmap g

These ensure by parametricity:

    dimap (f . g) (h . i) ≡ dimap g h . dimap f i
    lmap (f . g) ≡ lmap g . lmap f
    rmap (f . g) ≡ rmap f . rmap g

Minimal complete definition

dimap | lmap, rmap

Methods

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

Map over both arguments at the same time.

    dimap f g ≡ lmap f . rmap g

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

Map the first argument contravariantly.

    lmap f ≡ dimap f id

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

Map the second argument covariantly.

    rmap ≡ dimap id

#### Instances

Instances details

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 #

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 #

Monad m => Profunctor (Kleisli m) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

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

lmap :: (a -> b) -> Kleisli m b c -> Kleisli m a c Source #

rmap :: (b -> c) -> Kleisli m a b -> Kleisli m a c Source #

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

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

Profunctor p => Profunctor (CofreeMapping p) |

Instance details

Defined in Data.Profunctor.Mapping

Methods

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

lmap :: (a -> b) -> CofreeMapping p b c -> CofreeMapping p a c Source #

rmap :: (b -> c) -> CofreeMapping p a b -> CofreeMapping p a c Source #

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

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

Profunctor (FreeMapping p) |

Instance details

Defined in Data.Profunctor.Mapping

Methods

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

lmap :: (a -> b) -> FreeMapping p b c -> FreeMapping p a c Source #

rmap :: (b -> c) -> FreeMapping p a b -> FreeMapping p a c Source #

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

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

Profunctor p => Profunctor (TambaraSum p) |

Instance details

Defined in Data.Profunctor.Choice

Methods

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

lmap :: (a -> b) -> TambaraSum p b c -> TambaraSum p a c Source #

rmap :: (b -> c) -> TambaraSum p a b -> TambaraSum p a c Source #

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

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

Profunctor (PastroSum p) |

Instance details

Defined in Data.Profunctor.Choice

Methods

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

lmap :: (a -> b) -> PastroSum p b c -> PastroSum p a c Source #

rmap :: (b -> c) -> PastroSum p a b -> PastroSum p a c Source #

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

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

Profunctor (CotambaraSum p) |

Instance details

Defined in Data.Profunctor.Choice

Methods

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

lmap :: (a -> b) -> CotambaraSum p b c -> CotambaraSum p a c Source #

rmap :: (b -> c) -> CotambaraSum p a b -> CotambaraSum p a c Source #

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

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

Profunctor (CopastroSum p) |

Instance details

Defined in Data.Profunctor.Choice

Methods

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

lmap :: (a -> b) -> CopastroSum p b c -> CopastroSum p a c Source #

rmap :: (b -> c) -> CopastroSum p a b -> CopastroSum p a c Source #

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

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

Profunctor p => Profunctor (Closure p) |

Instance details

Defined in Data.Profunctor.Closed

Methods

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

lmap :: (a -> b) -> Closure p b c -> Closure p a c Source #

rmap :: (b -> c) -> Closure p a b -> Closure p a c Source #

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

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

Profunctor (Environment p) |

Instance details

Defined in Data.Profunctor.Closed

Methods

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

lmap :: (a -> b) -> Environment p b c -> Environment p a c Source #

rmap :: (b -> c) -> Environment p a b -> Environment p a c Source #

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

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

Profunctor p => Profunctor (Tambara p) |

Instance details

Defined in Data.Profunctor.Strong

Methods

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

lmap :: (a -> b) -> Tambara p b c -> Tambara p a c Source #

rmap :: (b -> c) -> Tambara p a b -> Tambara p a c Source #

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

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

Profunctor (Pastro p) |

Instance details

Defined in Data.Profunctor.Strong

Methods

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

lmap :: (a -> b) -> Pastro p b c -> Pastro p a c Source #

rmap :: (b -> c) -> Pastro p a b -> Pastro p a c Source #

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

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

Profunctor (Cotambara p) |

Instance details

Defined in Data.Profunctor.Strong

Methods

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

lmap :: (a -> b) -> Cotambara p b c -> Cotambara p a c Source #

rmap :: (b -> c) -> Cotambara p a b -> Cotambara p a c Source #

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

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

Profunctor (Copastro p) |

Instance details

Defined in Data.Profunctor.Strong

Methods

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

lmap :: (a -> b) -> Copastro p b c -> Copastro p a c Source #

rmap :: (b -> c) -> Copastro p a b -> Copastro p a c Source #

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

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

Functor f => Profunctor (Star f) |
Instance details Defined in Data.Profunctor.Types Methods dimap :: (a -> b) -> (c -> d) -> Star f b c -> Star f a d Source # lmap :: (a -> b) -> Star f b c -> Star f a c Source # rmap :: (b -> c) -> Star f a b -> Star f a c Source # (#.) :: forall a b c q. Coercible c b => q b c -> Star f a b -> Star f a c Source # (.#) :: forall a b c q. Coercible b a => Star f b c -> q a b -> Star f a c Source #
Functor f => Profunctor (Costar f) |

Instance details

Defined in Data.Profunctor.Types

Methods

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

lmap :: (a -> b) -> Costar f b c -> Costar f a c Source #

rmap :: (b -> c) -> Costar f a b -> Costar f a c Source #

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

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

Arrow p => Profunctor (WrappedArrow p) |

Instance details

Defined in Data.Profunctor.Types

Methods

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

lmap :: (a -> b) -> WrappedArrow p b c -> WrappedArrow p a c Source #

rmap :: (b -> c) -> WrappedArrow p a b -> WrappedArrow p a c Source #

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

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

Profunctor (Forget r) |

Instance details

Defined in Data.Profunctor.Types

Methods

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

lmap :: (a -> b) -> Forget r b c -> Forget r a c Source #

rmap :: (b -> c) -> Forget r a b -> Forget r a c Source #

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

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

Profunctor (Tagged :: Type -> Type -> Type) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

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

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

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

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

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

Profunctor (Indexed i) Source # |

Instance details

Defined in Control.Lens.Internal.Indexed

Methods

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

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

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

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

(.#) :: forall a b c q. Coercible b a => Indexed i b c -> q a b -> Indexed i a c 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 #

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 #

Profunctor ((->) :: Type -> Type -> Type) |
Instance details Defined in Data.Profunctor.Unsafe Methods dimap :: (a -> b) -> (c -> d) -> (b -> c) -> a -> d Source # lmap :: (a -> b) -> (b -> c) -> a -> c Source # rmap :: (b -> c) -> (a -> b) -> a -> c Source # (#.) :: forall a b c q. Coercible c b => q b c -> (a -> b) -> a -> c Source # (.#) :: forall a b c q. Coercible b a => (b -> c) -> q a b -> a -> c Source #
Functor w => Profunctor (Cokleisli w) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

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

lmap :: (a -> b) -> Cokleisli w b c -> Cokleisli w a c Source #

rmap :: (b -> c) -> Cokleisli w a b -> Cokleisli w a c Source #

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

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

(Functor f, Profunctor p) => Profunctor (Cayley f p) |

Instance details

Defined in Data.Profunctor.Cayley

Methods

dimap :: (a -> b) -> (c -> d) -> Cayley f p b c -> Cayley f p a d Source #

lmap :: (a -> b) -> Cayley f p b c -> Cayley f p a c Source #

rmap :: (b -> c) -> Cayley f p a b -> Cayley f p a c Source #

(#.) :: forall a b c q. Coercible c b => q b c -> Cayley f p a b -> Cayley f p a c Source #

(.#) :: forall a b c q. Coercible b a => Cayley f p b c -> q a b -> Cayley f p a c Source #

(Profunctor p, Profunctor q) => Profunctor (Procompose p q) |

Instance details

Defined in Data.Profunctor.Composition

Methods

dimap :: (a -> b) -> (c -> d) -> Procompose p q b c -> Procompose p q a d Source #

lmap :: (a -> b) -> Procompose p q b c -> Procompose p q a c Source #

rmap :: (b -> c) -> Procompose p q a b -> Procompose p q a c Source #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Procompose p q a b -> Procompose p q a c Source #

(.#) :: forall a b c q0. Coercible b a => Procompose p q b c -> q0 a b -> Procompose p q a c Source #

(Profunctor p, Profunctor q) => Profunctor (Rift p q) |

Instance details

Defined in Data.Profunctor.Composition

Methods

dimap :: (a -> b) -> (c -> d) -> Rift p q b c -> Rift p q a d Source #

lmap :: (a -> b) -> Rift p q b c -> Rift p q a c Source #

rmap :: (b -> c) -> Rift p q a b -> Rift p q a c Source #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Rift p q a b -> Rift p q a c Source #

(.#) :: forall a b c q0. Coercible b a => Rift p q b c -> q0 a b -> Rift p q a c Source #

Profunctor (Exchange a b) Source # |

Instance details

Defined in Control.Lens.Internal.Iso

Methods

dimap :: (a0 -> b0) -> (c -> d) -> Exchange a b b0 c -> Exchange a b a0 d Source #

lmap :: (a0 -> b0) -> Exchange a b b0 c -> Exchange a b a0 c Source #

rmap :: (b0 -> c) -> Exchange a b a0 b0 -> Exchange a b a0 c Source #

(#.) :: forall a0 b0 c q. Coercible c b0 => q b0 c -> Exchange a b a0 b0 -> Exchange a b a0 c Source #

(.#) :: forall a0 b0 c q. Coercible b0 a0 => Exchange a b b0 c -> q a0 b0 -> Exchange a b a0 c Source #

Profunctor (Market a b) Source # |

Instance details

Defined in Control.Lens.Internal.Prism

Methods

dimap :: (a0 -> b0) -> (c -> d) -> Market a b b0 c -> Market a b a0 d Source #

lmap :: (a0 -> b0) -> Market a b b0 c -> Market a b a0 c Source #

rmap :: (b0 -> c) -> Market a b a0 b0 -> Market a b a0 c Source #

(#.) :: forall a0 b0 c q. Coercible c b0 => q b0 c -> Market a b a0 b0 -> Market a b a0 c Source #

(.#) :: forall a0 b0 c q. Coercible b0 a0 => Market a b b0 c -> q a0 b0 -> Market a b a0 c Source #

Functor f => Profunctor (Joker f :: Type -> Type -> Type) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

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

lmap :: (a -> b) -> Joker f b c -> Joker f a c Source #

rmap :: (b -> c) -> Joker f a b -> Joker f a c Source #

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

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

Contravariant f => Profunctor (Clown f :: Type -> Type -> Type) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

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

lmap :: (a -> b) -> Clown f b c -> Clown f a c Source #

rmap :: (b -> c) -> Clown f a b -> Clown f a c Source #

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

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

(Profunctor p, Profunctor q) => Profunctor (Sum p q) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Sum p q b c -> Sum p q a d Source #

lmap :: (a -> b) -> Sum p q b c -> Sum p q a c Source #

rmap :: (b -> c) -> Sum p q a b -> Sum p q a c Source #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Sum p q a b -> Sum p q a c Source #

(.#) :: forall a b c q0. Coercible b a => Sum p q b c -> q0 a b -> Sum p q a c Source #

(Profunctor p, Profunctor q) => Profunctor (Product p q) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Product p q b c -> Product p q a d Source #

lmap :: (a -> b) -> Product p q b c -> Product p q a c Source #

rmap :: (b -> c) -> Product p q a b -> Product p q a c Source #

(#.) :: forall a b c q0. Coercible c b => q0 b c -> Product p q a b -> Product p q a c Source #

(.#) :: forall a b c q0. Coercible b a => Product p q b c -> q0 a b -> Product p q a c Source #

(Functor f, Profunctor p) => Profunctor (Tannen f p) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Tannen f p b c -> Tannen f p a d Source #

lmap :: (a -> b) -> Tannen f p b c -> Tannen f p a c Source #

rmap :: (b -> c) -> Tannen f p a b -> Tannen f p a c Source #

(#.) :: forall a b c q. Coercible c b => q b c -> Tannen f p a b -> Tannen f p a c Source #

(.#) :: forall a b c q. Coercible b a => Tannen f p b c -> q a b -> Tannen f p a c Source #

(Profunctor p, Functor f, Functor g) => Profunctor (Biff p f g) |

Instance details

Defined in Data.Profunctor.Unsafe

Methods

dimap :: (a -> b) -> (c -> d) -> Biff p f g b c -> Biff p f g a d Source #

lmap :: (a -> b) -> Biff p f g b c -> Biff p f g a c Source #

rmap :: (b -> c) -> Biff p f g a b -> Biff p f g a c Source #

(#.) :: forall a b c q. Coercible c b => q b c -> Biff p f g a b -> Biff p f g a c Source #

(.#) :: forall a b c q. Coercible b a => Biff p f g b c -> q a b -> Biff p f g a c Source #

sequenceBy :: Traversable t => (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> t (f a) -> f (t a) Source #

Sequence a container using its `Traversable` instance using explicitly provided `Applicative` operations. This is like `sequence` where the `Applicative` instance can be manually specified.

traverseBy :: Traversable t => (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (a -> f b) -> t a -> f (t b) Source #

Traverse a container using its `Traversable` instance using explicitly provided `Applicative` operations. This is like `traverse` where the `Applicative` instance can be manually specified.

foldMapBy :: Foldable t => (r -> r -> r) -> r -> (a -> r) -> t a -> r Source #

Fold a value using its `Foldable` instance using explicitly provided `Monoid` operations. This is like `foldMap` where the `Monoid` instance can be manually specified.

    foldMapBy mappend mempty ≡ foldMap

    >>> foldMapBy (+) 0 length ["hello","world"]
    10

foldBy :: Foldable t => (a -> a -> a) -> a -> t a -> a Source #

Fold a value using its `Foldable` instance using explicitly provided `Monoid` operations. This is like `fold` where the `Monoid` instance can be manually specified.

    foldBy mappend mempty ≡ fold

    >>> foldBy (++) [] ["hello","world"]
    "helloworld"

class (Foldable1 t, Traversable t) => Traversable1 (t :: Type -> Type) where Source #

Minimal complete definition

traverse1 | sequence1

Methods

traverse1 :: Apply f => (a -> f b) -> t a -> f (t b) Source #

#### Instances

Instances details

Traversable1 Par1 |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Par1 a -> f (Par1 b) Source # sequence1 :: Apply f => Par1 (f b) -> f (Par1 b) Source #
Traversable1 Identity |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Identity a -> f (Identity b) Source # sequence1 :: Apply f => Identity (f b) -> f (Identity b) Source #
Traversable1 Complex |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Complex a -> f (Complex b) Source # sequence1 :: Apply f => Complex (f b) -> f (Complex b) Source #
Traversable1 Sum |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Sum a -> f (Sum b) Source # sequence1 :: Apply f => Sum (f b) -> f (Sum b) Source #
Traversable1 Product |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Product a -> f (Product b) Source # sequence1 :: Apply f => Product (f b) -> f (Product b) Source #
Traversable1 NonEmpty |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> NonEmpty a -> f (NonEmpty b) Source # sequence1 :: Apply f => NonEmpty (f b) -> f (NonEmpty b) Source #
Traversable1 Dual |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Dual a -> f (Dual b) Source # sequence1 :: Apply f => Dual (f b) -> f (Dual b) Source #
Traversable1 Tree |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Tree a -> f (Tree b) Source # sequence1 :: Apply f => Tree (f b) -> f (Tree b) Source #
Traversable1 First |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> First a -> f (First b) Source # sequence1 :: Apply f => First (f b) -> f (First b) Source #
Traversable1 Last |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Last a -> f (Last b) Source # sequence1 :: Apply f => Last (f b) -> f (Last b) Source #
Traversable1 Max |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Max a -> f (Max b) Source # sequence1 :: Apply f => Max (f b) -> f (Max b) Source #
Traversable1 Min |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Min a -> f (Min b) Source # sequence1 :: Apply f => Min (f b) -> f (Min b) Source #
Traversable1 (V1 :: Type -> Type) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> V1 a -> f (V1 b) Source # sequence1 :: Apply f => V1 (f b) -> f (V1 b) Source #
Traversable1 ((,) a) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a0 -> f b) -> (a, a0) -> f (a, b) Source # sequence1 :: Apply f => (a, f b) -> f (a, b) Source #
Traversable1 f => Traversable1 (Cofree f) |
Instance details Defined in Control.Comonad.Cofree Methods traverse1 :: Apply f0 => (a -> f0 b) -> Cofree f a -> f0 (Cofree f b) Source # sequence1 :: Apply f0 => Cofree f (f0 b) -> f0 (Cofree f b) Source #
Traversable1 f => Traversable1 (F f) |
Instance details Defined in Control.Monad.Free.Church Methods traverse1 :: Apply f0 => (a -> f0 b) -> F f a -> f0 (F f b) Source # sequence1 :: Apply f0 => F f (f0 b) -> f0 (F f b) Source #
Traversable1 f => Traversable1 (Free f) |
Instance details Defined in Control.Monad.Free Methods traverse1 :: Apply f0 => (a -> f0 b) -> Free f a -> f0 (Free f b) Source # sequence1 :: Apply f0 => Free f (f0 b) -> f0 (Free f b) Source #
(Monad m, Traversable1 m) => Traversable1 (IterT m) |
Instance details Defined in Control.Monad.Trans.Iter Methods traverse1 :: Apply f => (a -> f b) -> IterT m a -> f (IterT m b) Source # sequence1 :: Apply f => IterT m (f b) -> f (IterT m b) Source #
Traversable1 f => Traversable1 (Yoneda f) |
Instance details Defined in Data.Functor.Yoneda Methods traverse1 :: Apply f0 => (a -> f0 b) -> Yoneda f a -> f0 (Yoneda f b) Source # sequence1 :: Apply f0 => Yoneda f (f0 b) -> f0 (Yoneda f b) Source #
Traversable1 f => Traversable1 (Lift f) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Lift f a -> f0 (Lift f b) Source # sequence1 :: Apply f0 => Lift f (f0 b) -> f0 (Lift f b) Source #
Traversable1 f => Traversable1 (Rec1 f) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Rec1 f a -> f0 (Rec1 f b) Source # sequence1 :: Apply f0 => Rec1 f (f0 b) -> f0 (Rec1 f b) Source #
Traversable1 f => Traversable1 (Alt f) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Alt f a -> f0 (Alt f b) Source # sequence1 :: Apply f0 => Alt f (f0 b) -> f0 (Alt f b) Source #
Bitraversable1 p => Traversable1 (Join p) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a -> f b) -> Join p a -> f (Join p b) Source # sequence1 :: Apply f => Join p (f b) -> f (Join p b) Source #
Traversable1 f => Traversable1 (IdentityT f) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> IdentityT f a -> f0 (IdentityT f b) Source # sequence1 :: Apply f0 => IdentityT f (f0 b) -> f0 (IdentityT f b) Source #
Traversable1 (Tagged a) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a0 -> f b) -> Tagged a a0 -> f (Tagged a b) Source # sequence1 :: Apply f => Tagged a (f b) -> f (Tagged a b) Source #
Traversable1 f => Traversable1 (AlongsideRight f a) Source # |
Instance details Defined in Control.Lens.Internal.Getter Methods traverse1 :: Apply f0 => (a0 -> f0 b) -> AlongsideRight f a a0 -> f0 (AlongsideRight f a b) Source # sequence1 :: Apply f0 => AlongsideRight f a (f0 b) -> f0 (AlongsideRight f a b) Source #
Traversable1 f => Traversable1 (AlongsideLeft f b) Source # |
Instance details Defined in Control.Lens.Internal.Getter Methods traverse1 :: Apply f0 => (a -> f0 b0) -> AlongsideLeft f b a -> f0 (AlongsideLeft f b b0) Source # sequence1 :: Apply f0 => AlongsideLeft f b (f0 b0) -> f0 (AlongsideLeft f b b0) Source #
Traversable1 f => Traversable1 (Backwards f) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Backwards f a -> f0 (Backwards f b) Source # sequence1 :: Apply f0 => Backwards f (f0 b) -> f0 (Backwards f b) Source #
Traversable1 f => Traversable1 (Reverse f) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Reverse f a -> f0 (Reverse f b) Source # sequence1 :: Apply f0 => Reverse f (f0 b) -> f0 (Reverse f b) Source #
(Traversable1 f, Traversable1 g) => Traversable1 (f :+: g) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> (f :+: g) a -> f0 ((f :+: g) b) Source # sequence1 :: Apply f0 => (f :+: g) (f0 b) -> f0 ((f :+: g) b) Source #
(Traversable1 f, Traversable1 g) => Traversable1 (f :*: g) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> (f :*: g) a -> f0 ((f :*: g) b) Source # sequence1 :: Apply f0 => (f :*: g) (f0 b) -> f0 ((f :*: g) b) Source #
(Traversable1 f, Traversable1 g) => Traversable1 (Sum f g) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Sum f g a -> f0 (Sum f g b) Source # sequence1 :: Apply f0 => Sum f g (f0 b) -> f0 (Sum f g b) Source #
(Traversable1 f, Traversable1 g) => Traversable1 (Product f g) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Product f g a -> f0 (Product f g b) Source # sequence1 :: Apply f0 => Product f g (f0 b) -> f0 (Product f g b) Source #
Traversable1 f => Traversable1 (M1 i c f) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> M1 i c f a -> f0 (M1 i c f b) Source # sequence1 :: Apply f0 => M1 i c f (f0 b) -> f0 (M1 i c f b) Source #
(Traversable1 f, Traversable1 g) => Traversable1 (f :.: g) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> (f :.: g) a -> f0 ((f :.: g) b) Source # sequence1 :: Apply f0 => (f :.: g) (f0 b) -> f0 ((f :.: g) b) Source #
(Traversable1 f, Traversable1 g) => Traversable1 (Compose f g) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f0 => (a -> f0 b) -> Compose f g a -> f0 (Compose f g b) Source # sequence1 :: Apply f0 => Compose f g (f0 b) -> f0 (Compose f g b) Source #
Traversable1 g => Traversable1 (Joker g a) |
Instance details Defined in Data.Semigroup.Traversable.Class Methods traverse1 :: Apply f => (a0 -> f b) -> Joker g a a0 -> f (Joker g a b) Source # sequence1 :: Apply f => Joker g a (f b) -> f (Joker g a b) Source #

data Rightmost a Source #

Used for `lastOf`.

#### Instances

Instances details

Semigroup (Rightmost a) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods (<>) :: Rightmost a -> Rightmost a -> Rightmost a sconcat :: NonEmpty (Rightmost a) -> Rightmost a stimes :: Integral b => b -> Rightmost a -> Rightmost a
Monoid (Rightmost a) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods mempty :: Rightmost a mappend :: Rightmost a -> Rightmost a -> Rightmost a mconcat :: [Rightmost a] -> Rightmost a

data Leftmost a Source #

Used for `firstOf`.

#### Instances

Instances details

Semigroup (Leftmost a) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods (<>) :: Leftmost a -> Leftmost a -> Leftmost a sconcat :: NonEmpty (Leftmost a) -> Leftmost a stimes :: Integral b => b -> Leftmost a -> Leftmost a
Monoid (Leftmost a) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods mempty :: Leftmost a mappend :: Leftmost a -> Leftmost a -> Leftmost a mconcat :: [Leftmost a] -> Leftmost a

data Sequenced a m Source #

Used internally by `mapM_` and the like.

The argument `a` of the result should not be used!

See 4.16 Changelog entry for the explanation of "why not Apply f =>"?

#### Instances

Instances details

Monad m => Semigroup (Sequenced a m) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods (<>) :: Sequenced a m -> Sequenced a m -> Sequenced a m sconcat :: NonEmpty (Sequenced a m) -> Sequenced a m stimes :: Integral b => b -> Sequenced a m -> Sequenced a m
Monad m => Monoid (Sequenced a m) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods mempty :: Sequenced a m mappend :: Sequenced a m -> Sequenced a m -> Sequenced a m mconcat :: [Sequenced a m] -> Sequenced a m

data Traversed a f Source #

Used internally by `traverseOf_` and the like.

The argument `a` of the result should not be used!

#### Instances

Instances details

Applicative f => Semigroup (Traversed a f) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods (<>) :: Traversed a f -> Traversed a f -> Traversed a f sconcat :: NonEmpty (Traversed a f) -> Traversed a f stimes :: Integral b => b -> Traversed a f -> Traversed a f
Applicative f => Monoid (Traversed a f) Source # |
Instance details Defined in Control.Lens.Internal.Fold Methods mempty :: Traversed a f mappend :: Traversed a f -> Traversed a f -> Traversed a f mconcat :: [Traversed a f] -> Traversed a f

newtype Indexed i a b Source #

A function with access to a index. This constructor may be useful when you need to store an `Indexable` in a container to avoid `ImpredicativeTypes`.

    index :: Indexed i a b -> i -> a -> b

Constructors

Indexed |

Fields

- runIndexed :: i -> a -> b

#### Instances

Instances details

i ~ j => Indexable i (Indexed j) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods indexed :: Indexed j a b -> i -> a -> b Source #
ArrowLoop (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods loop :: Indexed i (b, d) (c, d) -> Indexed i b c
ArrowChoice (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods left :: Indexed i b c -> Indexed i (Either b d) (Either c d) right :: Indexed i b c -> Indexed i (Either d b) (Either d c) (+++) :: Indexed i b c -> Indexed i b' c' -> Indexed i (Either b b') (Either c c') (|||) :: Indexed i b d -> Indexed i c d -> Indexed i (Either b c) d
ArrowApply (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods app :: Indexed i (Indexed i b c, b) c
Arrow (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods arr :: (b -> c) -> Indexed i b c first :: Indexed i b c -> Indexed i (b, d) (c, d) second :: Indexed i b c -> Indexed i (d, b) (d, c) (***) :: Indexed i b c -> Indexed i b' c' -> Indexed i (b, b') (c, c') (&&&) :: Indexed i b c -> Indexed i b c' -> Indexed i b (c, c')
Representable (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Associated Types type Rep (Indexed i) :: Type -> Type Source # Methods tabulate :: (d -> Rep (Indexed i) c) -> Indexed i d c Source #
Corepresentable (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Associated Types type Corep (Indexed i) :: Type -> Type Source # Methods cotabulate :: (Corep (Indexed i) d -> c) -> Indexed i d c Source #
Choice (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods left' :: Indexed i a b -> Indexed i (Either a c) (Either b c) Source # right' :: Indexed i a b -> Indexed i (Either c a) (Either c b) Source #
Closed (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods closed :: Indexed i a b -> Indexed i (x -> a) (x -> b) Source #
Strong (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods first' :: Indexed i a b -> Indexed i (a, c) (b, c) Source # second' :: Indexed i a b -> Indexed i (c, a) (c, b) Source #
Costrong (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods unfirst :: Indexed i (a, d) (b, d) -> Indexed i a b Source # unsecond :: Indexed i (d, a) (d, b) -> Indexed i a b Source #
Profunctor (Indexed i) Source # |

Instance details

Defined in Control.Lens.Internal.Indexed

Methods

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

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

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

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

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

Conjoined (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods distrib :: Functor f => Indexed i a b -> Indexed i (f a) (f b) Source # conjoined :: (Indexed i ~ (->) => q (a -> b) r) -> q (Indexed i a b) r -> q (Indexed i a b) r Source #
Bizarre (Indexed Int) Mafic Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods bazaar :: Applicative f => Indexed Int a (f b) -> Mafic a b t -> f t Source #
Category (Indexed i :: Type -> Type -> Type) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods id :: forall (a :: k). Indexed i a a (.) :: forall (b :: k) (c :: k) (a :: k). Indexed i b c -> Indexed i a b -> Indexed i a c
Cosieve (Indexed i) ((,) i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods cosieve :: Indexed i a b -> (i, a) -> b Source #
Sellable (Indexed i) (Molten i) Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods sell :: Indexed i a (Molten i a b b) Source #
Bizarre (Indexed i) (Molten i) Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods bazaar :: Applicative f => Indexed i a (f b) -> Molten i a b t -> f t Source #
Sieve (Indexed i) ((->) i :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods sieve :: Indexed i a b -> a -> i -> b Source #
Monad (Indexed i a) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods (>>=) :: Indexed i a a0 -> (a0 -> Indexed i a b) -> Indexed i a b (>>) :: Indexed i a a0 -> Indexed i a b -> Indexed i a b return :: a0 -> Indexed i a a0
Functor (Indexed i a) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods fmap :: (a0 -> b) -> Indexed i a a0 -> Indexed i a b # (<$) :: a0 -> Indexed i a b -> Indexed i a a0 #
MonadFix (Indexed i a) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods mfix :: (a0 -> Indexed i a a0) -> Indexed i a a0
Applicative (Indexed i a) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods pure :: a0 -> Indexed i a a0 (<*>) :: Indexed i a (a0 -> b) -> Indexed i a a0 -> Indexed i a b liftA2 :: (a0 -> b -> c) -> Indexed i a a0 -> Indexed i a b -> Indexed i a c (*>) :: Indexed i a a0 -> Indexed i a b -> Indexed i a b (<*) :: Indexed i a a0 -> Indexed i a b -> Indexed i a a0
Apply (Indexed i a) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods (<.>) :: Indexed i a (a0 -> b) -> Indexed i a a0 -> Indexed i a b Source # (.>) :: Indexed i a a0 -> Indexed i a b -> Indexed i a b Source # (<.) :: Indexed i a a0 -> Indexed i a b -> Indexed i a a0 Source # liftF2 :: (a0 -> b -> c) -> Indexed i a a0 -> Indexed i a b -> Indexed i a c Source #
Bind (Indexed i a) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods (>>-) :: Indexed i a a0 -> (a0 -> Indexed i a b) -> Indexed i a b Source # join :: Indexed i a (Indexed i a a0) -> Indexed i a a0 Source #
type Rep (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed type Rep (Indexed i) = (->) i :: Type -> Type
type Corep (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed type Corep (Indexed i) = (,) i

class Conjoined p => Indexable i p where Source #

This class permits overloading of function application for things that also admit a notion of a key or index.

Methods

indexed :: p a b -> i -> a -> b Source #

Build a function from an `indexed` function.

#### Instances

Instances details

i ~ j => Indexable i (Indexed j) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods indexed :: Indexed j a b -> i -> a -> b Source #
Indexable i ((->) :: Type -> Type -> Type) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods indexed :: (a -> b) -> i -> a -> b Source #

class (Choice p, Corepresentable p, Comonad (Corep p), Traversable (Corep p), Strong p, Representable p, Monad (Rep p), MonadFix (Rep p), Distributive (Rep p), Costrong p, ArrowLoop p, ArrowApply p, ArrowChoice p, Closed p) => Conjoined p where Source #

This is a `Profunctor` that is both `Corepresentable` by `f` and `Representable` by `g` such that `f` is left adjoint to `g`. From this you can derive a lot of structure due to the preservation of limits and colimits.

Minimal complete definition

Nothing

Methods

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

`Conjoined` is strong enough to let us distribute every `Conjoined` `Profunctor` over every Haskell `Functor`. This is effectively a generalization of `fmap`.

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

This permits us to make a decision at an outermost point about whether or not we use an index.

Ideally any use of this function should be done in such a way so that you compute the same answer, but this cannot be enforced at the type level.

#### Instances

Instances details

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 #
Conjoined (Indexed i) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods distrib :: Functor f => Indexed i a b -> Indexed i (f a) (f b) Source # conjoined :: (Indexed i ~ (->) => q (a -> b) r) -> q (Indexed i a b) r -> q (Indexed i a b) r Source #
Conjoined ((->) :: Type -> Type -> Type) Source # |
Instance details Defined in Control.Lens.Internal.Indexed Methods distrib :: Functor f => (a -> b) -> f a -> f b Source # conjoined :: ((->) ~ (->) => q (a -> b) r) -> q (a -> b) r -> q (a -> b) r Source #

indexing :: Indexable Int p => ((a -> Indexing f b) -> s -> Indexing f t) -> p a (f b) -> s -> f t Source #

Transform a `Traversal` into an `IndexedTraversal` or a `Fold` into an `IndexedFold`, etc.

    indexing :: Traversal s t a b -> IndexedTraversal Int s t a b
    indexing :: Prism s t a b     -> IndexedTraversal Int s t a b
    indexing :: Lens s t a b      -> IndexedLens Int  s t a b
    indexing :: Iso s t a b       -> IndexedLens Int s t a b
    indexing :: Fold s a          -> IndexedFold Int s a
    indexing :: Getter s a        -> IndexedGetter Int s a

    indexing :: Indexable Int p => LensLike (Indexing f) s t a b -> Over p f s t a b

indexing64 :: Indexable Int64 p => ((a -> Indexing64 f b) -> s -> Indexing64 f t) -> p a (f b) -> s -> f t Source #

Transform a `Traversal` into an `IndexedTraversal` or a `Fold` into an `IndexedFold`, etc.

This combinator is like `indexing` except that it handles large traversals and folds gracefully.

    indexing64 :: Traversal s t a b -> IndexedTraversal Int64 s t a b
    indexing64 :: Prism s t a b     -> IndexedTraversal Int64 s t a b
    indexing64 :: Lens s t a b      -> IndexedLens Int64 s t a b
    indexing64 :: Iso s t a b       -> IndexedLens Int64 s t a b
    indexing64 :: Fold s a          -> IndexedFold Int64 s a
    indexing64 :: Getter s a        -> IndexedGetter Int64 s a

    indexing64 :: Indexable Int64 p => LensLike (Indexing64 f) s t a b -> Over p f s t a b

withIndex :: (Indexable i p, Functor f) => p (i, s) (f (j, t)) -> Indexed i s (f t) Source #

Fold a container with indices returning both the indices and the values.

The result is only valid to compose in a `Traversal`, if you don't edit the index as edits to the index have no effect.

    >>> [10, 20, 30] ^.. ifolded . withIndex
    [(0,10),(1,20),(2,30)]

    >>> [10, 20, 30] ^.. ifolded . withIndex . alongside negated (re _Show)
    [(0,"10"),(-1,"20"),(-2,"30")]

asIndex :: (Indexable i p, Contravariant f, Functor f) => p i (f i) -> Indexed i s (f s) Source #

When composed with an `IndexedFold` or `IndexedTraversal` this yields an (`Indexed`) `Fold` of the indices.

type Context' a = Context a a Source #

    type Context' a s = Context a a s

data Context a b t Source #

The indexed store can be used to characterize a `Lens` and is used by `cloneLens`.

``Context` a b t` is isomorphic to `newtype `Context` a b t = `Context` { runContext :: forall f. `Functor` f => (a -> f b) -> f t }`, and to `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

Instances details

IndexedComonadStore Context Source # |

Instance details

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 #

context :: Context a b t -> Context a b t Source #

IndexedComonad Context Source # |
Instance details Defined in Control.Lens.Internal.Context Methods iextract :: Context a a t -> t Source # iduplicate :: Context a c t -> Context a b (Context b c t) Source # iextend :: (Context b c t -> r) -> Context a c t -> Context a b r Source #
IndexedFunctor Context Source # |
Instance details Defined in Control.Lens.Internal.Context Methods ifmap :: (s -> t) -> Context a b s -> Context a b t Source #
a ~ b => ComonadStore a (Context a b) Source # |
Instance details Defined in Control.Lens.Internal.Context Methods pos :: Context a b a0 -> a Source # peek :: a -> Context a b a0 -> a0 Source # peeks :: (a -> a) -> Context a b a0 -> a0 Source # seek :: a -> Context a b a0 -> Context a b a0 Source # seeks :: (a -> a) -> Context a b a0 -> Context a b a0 Source # experiment :: Functor f => (a -> f a) -> Context a b a0 -> f a0 Source #
Functor (Context a b) Source # |
Instance details Defined in Control.Lens.Internal.Context Methods fmap :: (a0 -> b0) -> Context a b a0 -> Context a b b0 # (<$) :: a0 -> Context a b b0 -> Context a b a0 #
a ~ b => Comonad (Context a b) Source # |
Instance details Defined in Control.Lens.Internal.Context Methods extract :: Context a b a0 -> a0 Source # duplicate :: Context a b a0 -> Context a b (Context a b a0) Source # extend :: (Context a b a0 -> b0) -> Context a b a0 -> Context a b b0 Source #
Sellable ((->) :: Type -> Type -> Type) Context Source # |
Instance details Defined in Control.Lens.Internal.Context Methods sell :: a -> Context a b b Source #

type Bazaar1' p a = Bazaar1 p a a Source #

This alias is helpful when it comes to reducing repetition in type signatures.

    type Bazaar1' p a t = Bazaar1 p a a t

newtype Bazaar1 p a b t Source #

This is used to characterize a `Traversal`.

a.k.a. indexed Cartesian store comonad, indexed Kleene store comonad, or an indexed `FunList`.

http://twanvl.nl/blog/haskell/non-regular1

A `Bazaar1` is like a `Traversal` that has already been applied to some structure.

Where a ``Context` a b t` holds an `a` and a function from `b` to `t`, a ``Bazaar1` a b t` holds `N` `a`s and a function from `N` `b`s to `t`, (where `N` might be infinite).

Mnemonically, a `Bazaar1` holds many stores and you can easily add more.

This is a final encoding of `Bazaar1`.

Constructors

Bazaar1 |

Fields

- runBazaar1 :: forall f. Apply f => p a (f b) -> f t

#### Instances

Instances details

Corepresentable p => Sellable p (Bazaar1 p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods sell :: p a (Bazaar1 p a b b) Source #
Profunctor p => Bizarre1 p (Bazaar1 p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods bazaar1 :: Apply f => p a (f b) -> Bazaar1 p a b t -> f t Source #
Conjoined p => IndexedComonad (Bazaar1 p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods iextract :: Bazaar1 p a a t -> t Source # iduplicate :: Bazaar1 p a c t -> Bazaar1 p a b (Bazaar1 p b c t) Source # iextend :: (Bazaar1 p b c t -> r) -> Bazaar1 p a c t -> Bazaar1 p a b r Source #
IndexedFunctor (Bazaar1 p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods ifmap :: (s -> t) -> Bazaar1 p a b s -> Bazaar1 p a b t Source #
Functor (Bazaar1 p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods fmap :: (a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 # (<$) :: a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b a0 #
(a ~ b, Conjoined p) => Comonad (Bazaar1 p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods extract :: Bazaar1 p a b a0 -> a0 Source # duplicate :: Bazaar1 p a b a0 -> Bazaar1 p a b (Bazaar1 p a b a0) Source # extend :: (Bazaar1 p a b a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 Source #
(a ~ b, Conjoined p) => ComonadApply (Bazaar1 p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods (<@>) :: Bazaar1 p a b (a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 Source # (@>) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b b0 Source # (<@) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b a0 Source #
Apply (Bazaar1 p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods (<.>) :: Bazaar1 p a b (a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 Source # (.>) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b b0 Source # (<.) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b a0 Source # liftF2 :: (a0 -> b0 -> c) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b c Source #

type Bazaar' p a = Bazaar p a a Source #

This alias is helpful when it comes to reducing repetition in type signatures.

    type Bazaar' p a t = Bazaar p a a t

newtype Bazaar p a b t Source #

This is used to characterize a `Traversal`.

a.k.a. indexed Cartesian store comonad, indexed Kleene store comonad, or an indexed `FunList`.

http://twanvl.nl/blog/haskell/non-regular1

A `Bazaar` is like a `Traversal` that has already been applied to some structure.

Where a ``Context` a b t` holds an `a` and a function from `b` to `t`, a ``Bazaar` a b t` holds `N` `a`s and a function from `N` `b`s to `t`, (where `N` might be infinite).

Mnemonically, a `Bazaar` holds many stores and you can easily add more.

This is a final encoding of `Bazaar`.

Constructors

Bazaar |

Fields

- runBazaar :: forall f. Applicative f => p a (f b) -> f t

#### Instances

Instances details

Corepresentable p => Sellable p (Bazaar p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods sell :: p a (Bazaar p a b b) Source #
Profunctor p => Bizarre p (Bazaar p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods bazaar :: Applicative f => p a (f b) -> Bazaar p a b t -> f t Source #
Conjoined p => IndexedComonad (Bazaar p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods iextract :: Bazaar p a a t -> t Source # iduplicate :: Bazaar p a c t -> Bazaar p a b (Bazaar p b c t) Source # iextend :: (Bazaar p b c t -> r) -> Bazaar p a c t -> Bazaar p a b r Source #
IndexedFunctor (Bazaar p) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods ifmap :: (s -> t) -> Bazaar p a b s -> Bazaar p a b t Source #
Functor (Bazaar p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods fmap :: (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 # (<$) :: a0 -> Bazaar p a b b0 -> Bazaar p a b a0 #
Applicative (Bazaar p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods pure :: a0 -> Bazaar p a b a0 (<*>) :: Bazaar p a b (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 liftA2 :: (a0 -> b0 -> c) -> Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b c (*>) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b b0 (<*) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b a0
(a ~ b, Conjoined p) => Comonad (Bazaar p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods extract :: Bazaar p a b a0 -> a0 Source # duplicate :: Bazaar p a b a0 -> Bazaar p a b (Bazaar p a b a0) Source # extend :: (Bazaar p a b a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source #
(a ~ b, Conjoined p) => ComonadApply (Bazaar p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods (<@>) :: Bazaar p a b (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source # (@>) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b b0 Source # (<@) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b a0 Source #
Apply (Bazaar p a b) Source # |
Instance details Defined in Control.Lens.Internal.Bazaar Methods (<.>) :: Bazaar p a b (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source # (.>) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b b0 Source # (<.) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b a0 Source # liftF2 :: (a0 -> b0 -> c) -> Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b c Source #

class Reversing t where Source #

This class provides a generalized notion of list reversal extended to other containers.

Methods

reversing :: t -> t Source #

#### Instances

Instances details

Reversing Text Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: Text -> Text Source #
Reversing ByteString Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: ByteString -> ByteString Source #
Reversing ByteString Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: ByteString -> ByteString Source #
Reversing Text Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: Text -> Text Source #
Reversing [a] Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: [a] -> [a] Source #
Reversing (NonEmpty a) Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: NonEmpty a -> NonEmpty a Source #
Unbox a => Reversing (Vector a) Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: Vector a -> Vector a Source #
Storable a => Reversing (Vector a) Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: Vector a -> Vector a Source #
Prim a => Reversing (Vector a) Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: Vector a -> Vector a Source #
Reversing (Vector a) Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: Vector a -> Vector a Source #
Reversing (Seq a) Source # |
Instance details Defined in Control.Lens.Internal.Iso Methods reversing :: Seq a -> Seq a Source #
Reversing (Deque a) Source # |
Instance details Defined in Control.Lens.Internal.Deque Methods reversing :: Deque a -> Deque a Source #

data Level i a Source #

This data type represents a path-compressed copy of one level of a source data structure. We can safely use path-compression because we know the depth of the tree.

Path compression is performed by viewing a `Level` as a PATRICIA trie of the paths into the structure to leaves at a given depth, similar in many ways to a `IntMap`, but unlike a regular PATRICIA trie we do not need to store the mask bits merely the depth of the fork.

One invariant of this structure is that underneath a `Two` node you will not find any `Zero` nodes, so `Zero` can only occur at the root.

#### Instances

Instances details

TraversableWithIndex i (Level i) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (i -> a -> f b) -> Level i a -> f (Level i b) Source # itraversed :: IndexedTraversal i (Level i a) (Level i b) a b Source #
FoldableWithIndex i (Level i) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Level i a -> m Source #

ifolded :: IndexedFold i (Level i a) a Source #

ifoldr :: (i -> a -> b -> b) -> b -> Level i a -> b Source #

ifoldl :: (i -> b -> a -> b) -> b -> Level i a -> b Source #

ifoldr' :: (i -> a -> b -> b) -> b -> Level i a -> b Source #

ifoldl' :: (i -> b -> a -> b) -> b -> Level i a -> b Source #

FunctorWithIndex i (Level i) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b) -> Level i a -> Level i b Source # imapped :: IndexedSetter i (Level i a) (Level i b) a b Source #
Functor (Level i) Source # |
Instance details Defined in Control.Lens.Internal.Level Methods fmap :: (a -> b) -> Level i a -> Level i b # (<$) :: a -> Level i b -> Level i a #
Foldable (Level i) Source # |

Instance details

Defined in Control.Lens.Internal.Level

Methods

fold :: Monoid m => Level i m -> m

foldMap :: Monoid m => (a -> m) -> Level i a -> m

foldMap' :: Monoid m => (a -> m) -> Level i a -> m

foldr :: (a -> b -> b) -> b -> Level i a -> b

foldr' :: (a -> b -> b) -> b -> Level i a -> b

foldl :: (b -> a -> b) -> b -> Level i a -> b

foldl' :: (b -> a -> b) -> b -> Level i a -> b

foldr1 :: (a -> a -> a) -> Level i a -> a

foldl1 :: (a -> a -> a) -> Level i a -> a

toList :: Level i a -> [a]

null :: Level i a -> Bool

length :: Level i a -> Int

elem :: Eq a => a -> Level i a -> Bool

maximum :: Ord a => Level i a -> a

minimum :: Ord a => Level i a -> a

sum :: Num a => Level i a -> a

product :: Num a => Level i a -> a

Traversable (Level i) Source # |
Instance details Defined in Control.Lens.Internal.Level Methods traverse :: Applicative f => (a -> f b) -> Level i a -> f (Level i b) # sequenceA :: Applicative f => Level i (f a) -> f (Level i a) mapM :: Monad m => (a -> m b) -> Level i a -> m (Level i b) sequence :: Monad m => Level i (m a) -> m (Level i a)
(Eq i, Eq a) => Eq (Level i a) Source # |
Instance details Defined in Control.Lens.Internal.Level Methods (==) :: Level i a -> Level i a -> Bool (/=) :: Level i a -> Level i a -> Bool
(Ord i, Ord a) => Ord (Level i a) Source # |
Instance details Defined in Control.Lens.Internal.Level Methods compare :: Level i a -> Level i a -> Ordering (<) :: Level i a -> Level i a -> Bool (<=) :: Level i a -> Level i a -> Bool (>) :: Level i a -> Level i a -> Bool (>=) :: Level i a -> Level i a -> Bool max :: Level i a -> Level i a -> Level i a min :: Level i a -> Level i a -> Level i a
(Read i, Read a) => Read (Level i a) Source # |
Instance details Defined in Control.Lens.Internal.Level Methods readsPrec :: Int -> ReadS (Level i a) readList :: ReadS [Level i a] readPrec :: ReadPrec (Level i a) readListPrec :: ReadPrec [Level i a]
(Show i, Show a) => Show (Level i a) Source # |
Instance details Defined in Control.Lens.Internal.Level Methods showsPrec :: Int -> Level i a -> ShowS show :: Level i a -> String showList :: [Level i a] -> ShowS

data Magma i t b a Source #

This provides a way to peek at the internal structure of a `Traversal` or `IndexedTraversal`

#### Instances

Instances details

TraversableWithIndex i (Magma i t b) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (i -> a -> f b0) -> Magma i t b a -> f (Magma i t b b0) Source # itraversed :: IndexedTraversal i (Magma i t b a) (Magma i t b b0) a b0 Source #
FoldableWithIndex i (Magma i t b) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Magma i t b a -> m Source #

ifolded :: IndexedFold i (Magma i t b a) a Source #

ifoldr :: (i -> a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source #

ifoldl :: (i -> b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source #

ifoldr' :: (i -> a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source #

ifoldl' :: (i -> b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source #

FunctorWithIndex i (Magma i t b) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b0) -> Magma i t b a -> Magma i t b b0 Source # imapped :: IndexedSetter i (Magma i t b a) (Magma i t b b0) a b0 Source #
Functor (Magma i t b) Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods fmap :: (a -> b0) -> Magma i t b a -> Magma i t b b0 # (<$) :: a -> Magma i t b b0 -> Magma i t b a #
Foldable (Magma i t b) Source # |

Instance details

Defined in Control.Lens.Internal.Magma

Methods

fold :: Monoid m => Magma i t b m -> m

foldMap :: Monoid m => (a -> m) -> Magma i t b a -> m

foldMap' :: Monoid m => (a -> m) -> Magma i t b a -> m

foldr :: (a -> b0 -> b0) -> b0 -> Magma i t b a -> b0

foldr' :: (a -> b0 -> b0) -> b0 -> Magma i t b a -> b0

foldl :: (b0 -> a -> b0) -> b0 -> Magma i t b a -> b0

foldl' :: (b0 -> a -> b0) -> b0 -> Magma i t b a -> b0

foldr1 :: (a -> a -> a) -> Magma i t b a -> a

foldl1 :: (a -> a -> a) -> Magma i t b a -> a

toList :: Magma i t b a -> [a]

null :: Magma i t b a -> Bool

length :: Magma i t b a -> Int

elem :: Eq a => a -> Magma i t b a -> Bool

maximum :: Ord a => Magma i t b a -> a

minimum :: Ord a => Magma i t b a -> a

sum :: Num a => Magma i t b a -> a

product :: Num a => Magma i t b a -> a

Traversable (Magma i t b) Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods traverse :: Applicative f => (a -> f b0) -> Magma i t b a -> f (Magma i t b b0) # sequenceA :: Applicative f => Magma i t b (f a) -> f (Magma i t b a) mapM :: Monad m => (a -> m b0) -> Magma i t b a -> m (Magma i t b b0) sequence :: Monad m => Magma i t b (m a) -> m (Magma i t b a)
(Show i, Show a) => Show (Magma i t b a) Source # |
Instance details Defined in Control.Lens.Internal.Magma Methods showsPrec :: Int -> Magma i t b a -> ShowS show :: Magma i t b a -> String showList :: [Magma i t b a] -> ShowS

class (Profunctor p, Bifunctor p) => Reviewable p Source #

This class is provided mostly for backwards compatibility with lens 3.8, but it can also shorten type signatures.

#### Instances

Instances details

(Profunctor p, Bifunctor p) => Reviewable p Source # |
Instance details Defined in Control.Lens.Internal.Review

retagged :: (Profunctor p, Bifunctor p) => p a b -> p s b Source #

This is a profunctor used internally to implement Review

It plays a role similar to that of `Accessor` or `Const` do for Control.Lens.Getter

class (Applicative f, Distributive f, Traversable f) => Settable f Source #

Anything `Settable` must be isomorphic to the `Identity` `Functor`.

Minimal complete definition

untainted

#### Instances

Instances details

Settable Identity Source # | So you can pass our `Setter` into combinators from other lens libraries.
Instance details Defined in Control.Lens.Internal.Setter Methods untainted :: Identity a -> a Source # untaintedDot :: Profunctor p => p a (Identity b) -> p a b Source # taintedDot :: Profunctor p => p a b -> p a (Identity b) Source #
Settable f => Settable (Backwards f) Source # | `backwards`
Instance details Defined in Control.Lens.Internal.Setter Methods untainted :: Backwards f a -> a Source # untaintedDot :: Profunctor p => p a (Backwards f b) -> p a b Source # taintedDot :: Profunctor p => p a b -> p a (Backwards f b) Source #
(Settable f, Settable g) => Settable (Compose f g) Source # |
Instance details Defined in Control.Lens.Internal.Setter Methods untainted :: Compose f g a -> a Source # untaintedDot :: Profunctor p => p a (Compose f g b) -> p a b Source # taintedDot :: Profunctor p => p a b -> p a (Compose f g b) Source #

type Over' p f s a = Over p f s s a a Source #

This is a convenient alias for use when you need to consume either indexed or non-indexed lens-likes based on context.

    type Over' p f = Simple (Over p f)

type Over p f s t a b = p a (f b) -> s -> f t Source #

This is a convenient alias for use when you need to consume either indexed or non-indexed lens-likes based on context.

type IndexedLensLike' i f s a = IndexedLensLike i f s s a a Source #

Convenient alias for constructing simple indexed lenses and their ilk.

type IndexedLensLike i f s t a b = forall p. Indexable i p => p a (f b) -> s -> f t Source #

Convenient alias for constructing indexed lenses and their ilk.

type LensLike' f s a = LensLike f s s a a Source #

    type LensLike' f = Simple (LensLike f)

type LensLike f s t a b = (a -> f b) -> s -> f t Source #

Many combinators that accept a `Lens` can also accept a `Traversal` in limited situations.

They do so by specializing the type of `Functor` that they require of the caller.

If a function accepts a ``LensLike` f s t a b` for some `Functor` `f`, then they may be passed a `Lens`.

Further, if `f` is an `Applicative`, they may also be passed a `Traversal`.

type Optical' p q f s a = Optical p q f s s a a Source #

    type Optical' p q f s a = Simple (Optical p q f) s a

type Optical p q f s t a b = p a (f b) -> q s (f t) Source #

    type LensLike f s t a b = Optical (->) (->) f s t a b

    type Over p f s t a b = Optical p (->) f s t a b

    type Optic p f s t a b = Optical p p f s t a b

type Optic' p f s a = Optic p f s s a a Source #

    type Optic' p f s a = Simple (Optic p f) s a

type Optic p f s t a b = p a (f b) -> p s (f t) Source #

A valid `Optic` `l` should satisfy the laws:

    l pure ≡ pure
    l (Procompose f g) = Procompose (l f) (l g)

This gives rise to the laws for `Equality`, `Iso`, `Prism`, `Lens`, `Traversal`, `Traversal1`, `Setter`, `Fold`, `Fold1`, and `Getter` as well along with their index-preserving variants.

    type LensLike f s t a b = Optic (->) f s t a b

type Simple f s a = f s s a a Source #

A `Simple` `Lens`, `Simple` `Traversal`, ... can be used instead of a `Lens`,`Traversal`, ... whenever the type variables don't change upon setting a value.

    _imagPart :: Simple Lens (Complex a) a
    traversed :: Simple (IndexedTraversal Int) [a] a

Note: To use this alias in your own code with ``LensLike` f` or `Setter`, you may have to turn on `LiberalTypeSynonyms`.

This is commonly abbreviated as a "prime" marker, e.g. `Lens'` = `Simple` `Lens`.

type IndexPreservingFold1 s a = forall p f. (Conjoined p, Contravariant f, Apply f) => p a (f a) -> p s (f s) Source #

type IndexedFold1 i s a = forall p f. (Indexable i p, Contravariant f, Apply f) => p a (f a) -> s -> f s Source #

type Fold1 s a = forall f. (Contravariant f, Apply f) => (a -> f a) -> s -> f s Source #

A relevant Fold (aka `Fold1`) has one or more targets.

type IndexPreservingFold s a = forall p f. (Conjoined p, Contravariant f, Applicative f) => p a (f a) -> p s (f s) Source #

An `IndexPreservingFold` can be used as a `Fold`, but when composed with an `IndexedTraversal`, `IndexedFold`, or `IndexedLens` yields an `IndexedFold` respectively.

type IndexedFold i s a = forall p f. (Indexable i p, Contravariant f, Applicative f) => p a (f a) -> s -> f s Source #

Every `IndexedFold` is a valid `Fold` and can be used for `Getting`.

type Fold s a = forall f. (Contravariant f, Applicative f) => (a -> f a) -> s -> f s Source #

A `Fold` describes how to retrieve multiple values in a way that can be composed with other `LensLike` constructions.

A ``Fold` s a` provides a structure with operations very similar to those of the `Foldable` typeclass, see `foldMapOf` and the other `Fold` combinators.

By convention, if there exists a `foo` method that expects a ``Foldable` (f a)`, then there should be a `fooOf` method that takes a ``Fold` s a` and a value of type `s`.

A `Getter` is a legal `Fold` that just ignores the supplied `Monoid`.

Unlike a `Traversal` a `Fold` is read-only. Since a `Fold` cannot be used to write back there are no `Lens` laws that apply.

type IndexPreservingGetter s a = forall p f. (Conjoined p, Contravariant f, Functor f) => p a (f a) -> p s (f s) Source #

An `IndexPreservingGetter` can be used as a `Getter`, but when composed with an `IndexedTraversal`, `IndexedFold`, or `IndexedLens` yields an `IndexedFold`, `IndexedFold` or `IndexedGetter` respectively.

type IndexedGetter i s a = forall p f. (Indexable i p, Contravariant f, Functor f) => p a (f a) -> s -> f s Source #

Every `IndexedGetter` is a valid `IndexedFold` and can be used for `Getting` like a `Getter`.

type Getter s a = forall f. (Contravariant f, Functor f) => (a -> f a) -> s -> f s Source #

A `Getter` describes how to retrieve a single value in a way that can be composed with other `LensLike` constructions.

Unlike a `Lens` a `Getter` is read-only. Since a `Getter` cannot be used to write back there are no `Lens` laws that can be applied to it. In fact, it is isomorphic to an arbitrary function from `(s -> a)`.

Moreover, a `Getter` can be used directly as a `Fold`, since it just ignores the `Applicative`.

type As a = Equality' a a Source #

Composable `asTypeOf`. Useful for constraining excess polymorphism, `foo . (id :: As Int) . bar`.

type Equality' s a = Equality s s a a Source #

A `Simple` `Equality`.

type Equality (s :: k1) (t :: k2) (a :: k1) (b :: k2) = forall k3 (p :: k1 -> k3 -> Type) (f :: k2 -> k3). p a (f b) -> p s (f t) Source #

A witness that `(a ~ s, b ~ t)`.

Note: Composition with an `Equality` is index-preserving.

type Prism' s a = Prism s s a a Source #

A `Simple` `Prism`.

type Prism s t a b = forall p f. (Choice p, Applicative f) => p a (f b) -> p s (f t) Source #

A `Prism` `l` is a `Traversal` that can also be turned around with `re` to obtain a `Getter` in the opposite direction.

There are three laws that a `Prism` should satisfy:

First, if I `re` or `review` a value with a `Prism` and then `preview` or use (`^?`), I will get it back:

    preview l (review l b) ≡ Just b

Second, if you can extract a value `a` using a `Prism` `l` from a value `s`, then the value `s` is completely described by `l` and `a`:

    preview l s ≡ Just a ⟹ review l a ≡ s

Third, if you get non-match `t`, you can convert it result back to `s`:

    matching l s ≡ Left t ⟹ matching l t ≡ Left s

The first two laws imply that the `Traversal` laws hold for every `Prism` and that we `traverse` at most 1 element:

    lengthOf l x <= 1

It may help to think of this as an `Iso` that can be partial in one direction.

Every `Prism` is a valid `Traversal`.

Every `Iso` is a valid `Prism`.

For example, you might have a ``Prism'` `Integer` `Natural`` allows you to always go from a `Natural` to an `Integer`, and provide you with tools to check if an `Integer` is a `Natural` and/or to edit one if it is.

    nat :: Prism' Integer Natural
    nat = prism toInteger $ \ i ->
       if i < 0
       then Left i
       else Right (fromInteger i)

Now we can ask if an `Integer` is a `Natural`.

    >>> 5^?nat
    Just 5

    >>> (-5)^?nat
    Nothing

We can update the ones that are:

    >>> (-3,4) & both.nat *~ 2
    (-3,8)

And we can then convert from a `Natural` to an `Integer`.

    >>> 5 ^. re nat -- :: Natural
    5

Similarly we can use a `Prism` to `traverse` the `Left` half of an `Either`:

    >>> Left "hello" & _Left %~ length
    Left 5

or to construct an `Either`:

    >>> 5^.re _Left
    Left 5

such that if you query it with the `Prism`, you will get your original input back.

    >>> 5^.re _Left ^? _Left
    Just 5

Another interesting way to think of a `Prism` is as the categorical dual of a `Lens` -- a co-`Lens`, so to speak. This is what permits the construction of `outside`.

Note: Composition with a `Prism` is index-preserving.

type AReview t b = Optic' Tagged Identity t b Source #

If you see this in a signature for a function, the function is expecting a `Review` (in practice, this usually means a `Prism`).

type Review t b = forall p f. (Choice p, Bifunctor p, Settable f) => Optic' p f t b Source #

This is a limited form of a `Prism` that can only be used for `re` operations.

Like with a `Getter`, there are no laws to state for a `Review`.

You can generate a `Review` by using `unto`. You can also use any `Prism` or `Iso` directly as a `Review`.

type Iso' s a = Iso s s a a Source #

    type Iso' = Simple Iso

type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t) Source #

Isomorphism families can be composed with another `Lens` using (`.`) and `id`.

Since every `Iso` is both a valid `Lens` and a valid `Prism`, the laws for those types imply the following laws for an `Iso` `f`:

    f . from f ≡ id
    from f . f ≡ id

Note: Composition with an `Iso` is index- and measure- preserving.

type IndexPreservingSetter' s a = IndexPreservingSetter s s a a Source #

    type IndexedPreservingSetter' i = Simple IndexedPreservingSetter

type IndexPreservingSetter s t a b = forall p f. (Conjoined p, Settable f) => p a (f b) -> p s (f t) Source #

An `IndexPreservingSetter` can be composed with a `IndexedSetter`, `IndexedTraversal` or `IndexedLens` and leaves the index intact, yielding an `IndexedSetter`.

type IndexedSetter' i s a = IndexedSetter i s s a a Source #

    type IndexedSetter' i = Simple (IndexedSetter i)

type IndexedSetter i s t a b = forall f p. (Indexable i p, Settable f) => p a (f b) -> s -> f t Source #

Every `IndexedSetter` is a valid `Setter`.

The `Setter` laws are still required to hold.

type Setter' s a = Setter s s a a Source #

A `Setter'` is just a `Setter` that doesn't change the types.

These are particularly common when talking about monomorphic containers. e.g.

    sets Data.Text.map :: Setter' Text Char

    type Setter' = Simple Setter

type Setter s t a b = forall f. Settable f => (a -> f b) -> s -> f t Source #

The only `LensLike` law that can apply to a `Setter` `l` is that

    set l y (set l x a) ≡ set l y a

You can't `view` a `Setter` in general, so the other two laws are irrelevant.

However, two `Functor` laws apply to a `Setter`:

    over l id ≡ id
    over l f . over l g ≡ over l (f . g)

These can be stated more directly:

    l pure ≡ pure
    l f . untainted . l g ≡ l (f . untainted . g)

You can compose a `Setter` with a `Lens` or a `Traversal` using (`.`) from the `Prelude` and the result is always only a `Setter` and nothing more.

    >>> over traverse f [a,b,c,d]
    [f a,f b,f c,f d]

    >>> over _1 f (a,b)
    (f a,b)

    >>> over (traverse._1) f [(a,b),(c,d)]
    [(f a,b),(f c,d)]

    >>> over both f (a,b)
    (f a,f b)

    >>> over (traverse.both) f [(a,b),(c,d)]
    [(f a,f b),(f c,f d)]

type IndexPreservingTraversal1' s a = IndexPreservingTraversal1 s s a a Source #

type IndexPreservingTraversal1 s t a b = forall p f. (Conjoined p, Apply f) => p a (f b) -> p s (f t) Source #

type IndexPreservingTraversal' s a = IndexPreservingTraversal s s a a Source #

    type IndexPreservingTraversal' = Simple IndexPreservingTraversal

type IndexPreservingTraversal s t a b = forall p f. (Conjoined p, Applicative f) => p a (f b) -> p s (f t) Source #

An `IndexPreservingLens` leaves any index it is composed with alone.

type IndexedTraversal1' i s a = IndexedTraversal1 i s s a a Source #

type IndexedTraversal1 i s t a b = forall p f. (Indexable i p, Apply f) => p a (f b) -> s -> f t Source #

type IndexedTraversal' i s a = IndexedTraversal i s s a a Source #

    type IndexedTraversal' i = Simple (IndexedTraversal i)

type IndexedTraversal i s t a b = forall p f. (Indexable i p, Applicative f) => p a (f b) -> s -> f t Source #

Every `IndexedTraversal` is a valid `Traversal` or `IndexedFold`.

The `Indexed` constraint is used to allow an `IndexedTraversal` to be used directly as a `Traversal`.

The `Traversal` laws are still required to hold.

In addition, the index `i` should satisfy the requirement that it stays unchanged even when modifying the value `a`, otherwise traversals like `indices` break the `Traversal` laws.

type Traversal1' s a = Traversal1 s s a a Source #

type Traversal1 s t a b = forall f. Apply f => (a -> f b) -> s -> f t Source #

type Traversal' s a = Traversal s s a a Source #

    type Traversal' = Simple Traversal

type Traversal s t a b = forall f. Applicative f => (a -> f b) -> s -> f t Source #

A `Traversal` can be used directly as a `Setter` or a `Fold` (but not as a `Lens`) and provides the ability to both read and update multiple fields, subject to some relatively weak `Traversal` laws.

These have also been known as multilenses, but they have the signature and spirit of

    traverse :: Traversable f => Traversal (f a) (f b) a b

and the more evocative name suggests their application.

Most of the time the `Traversal` you will want to use is just `traverse`, but you can also pass any `Lens` or `Iso` as a `Traversal`, and composition of a `Traversal` (or `Lens` or `Iso`) with a `Traversal` (or `Lens` or `Iso`) using (`.`) forms a valid `Traversal`.

The laws for a `Traversal` `t` follow from the laws for `Traversable` as stated in "The Essence of the Iterator Pattern".

    t pure ≡ pure
    fmap (t f) . t g ≡ getCompose . t (Compose . fmap f . g)

One consequence of this requirement is that a `Traversal` needs to leave the same number of elements as a candidate for subsequent `Traversal` that it started with. Another testament to the strength of these laws is that the caveat expressed in section 5.5 of the "Essence of the Iterator Pattern" about exotic `Traversable` instances that `traverse` the same entry multiple times was actually already ruled out by the second law in that same paper!

type IndexPreservingLens' s a = IndexPreservingLens s s a a Source #

    type IndexPreservingLens' = Simple IndexPreservingLens

type IndexPreservingLens s t a b = forall p f. (Conjoined p, Functor f) => p a (f b) -> p s (f t) Source #

An `IndexPreservingLens` leaves any index it is composed with alone.

type IndexedLens' i s a = IndexedLens i s s a a Source #

    type IndexedLens' i = Simple (IndexedLens i)

type IndexedLens i s t a b = forall f p. (Indexable i p, Functor f) => p a (f b) -> s -> f t Source #

Every `IndexedLens` is a valid `Lens` and a valid `IndexedTraversal`.

type Lens' s a = Lens s s a a Source #

    type Lens' = Simple Lens

type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t Source #

A `Lens` is actually a lens family as described in http://comonad.com/reader/2012/mirrored-lenses/.

With great power comes great responsibility and a `Lens` is subject to the three common sense `Lens` laws:

1) You get back what you put in:

    view l (set l v s)  ≡ v

2) Putting back what you got doesn't change anything:

    set l (view l s) s  ≡ s

3) Setting twice is the same as setting once:

    set l v' (set l v s) ≡ set l v' s

These laws are strong enough that the 4 type parameters of a `Lens` cannot vary fully independently. For more on how they interact, read the "Why is it a Lens Family?" section of http://comonad.com/reader/2012/mirrored-lenses/.

There are some emergent properties of these laws:

1) ``set` l s` must be injective for every `s` This is a consequence of law #1

2) ``set` l` must be surjective, because of law #2, which indicates that it is possible to obtain any `v` from some `s` such that ``set` s v = s`

3) Given just the first two laws you can prove a weaker form of law #3 where the values `v` that you are setting match:

    set l v (set l v s) ≡ set l v s

Every `Lens` can be used directly as a `Setter` or `Traversal`.

You can also use a `Lens` for `Getting` as if it were a `Fold` or `Getter`.

Since every `Lens` is a valid `Traversal`, the `Traversal` laws are required of any `Lens` you create:

    l pure ≡ pure
    fmap (l f) . l g ≡ getCompose . l (Compose . fmap f . g)

    type Lens s t a b = forall f. Functor f => LensLike f s t a b

type Setting' p s a = Setting p s s a a Source #

This is a convenient alias when defining highly polymorphic code that takes both `ASetter'` and `AnIndexedSetter'` as appropriate. If a function takes this it is expecting one of those two things based on context.

type Setting p s t a b = p a (Identity b) -> s -> Identity t Source #

This is a convenient alias when defining highly polymorphic code that takes both `ASetter` and `AnIndexedSetter` as appropriate. If a function takes this it is expecting one of those two things based on context.

type AnIndexedSetter' i s a = AnIndexedSetter i s s a a Source #

    type AnIndexedSetter' i = Simple (AnIndexedSetter i)

type AnIndexedSetter i s t a b = Indexed i a (Identity b) -> s -> Identity t Source #

Running an `IndexedSetter` instantiates it to a concrete type.

When consuming a setter directly to perform a mapping, you can use this type, but most user code will not need to use this type.

type ASetter' s a = ASetter s s a a Source #

This is a useful alias for use when consuming a `Setter'`.

Most user code will never have to use this type.

    type ASetter' = Simple ASetter

type ASetter s t a b = (a -> Identity b) -> s -> Identity t Source #

Running a `Setter` instantiates it to a concrete type.

When consuming a setter directly to perform a mapping, you can use this type, but most user code will not need to use this type.

mapped :: Functor f => Setter (f a) (f b) a b Source #

This `Setter` can be used to map over all of the values in a `Functor`.

    fmap ≡ over mapped
    fmapDefault ≡ over traverse
    (<$) ≡ set mapped

    >>> over mapped f [a,b,c]
    [f a,f b,f c]

    >>> over mapped (+1) [1,2,3]
    [2,3,4]

    >>> set mapped x [a,b,c]
    [x,x,x]

    >>> [[a,b],[c]] & mapped.mapped +~ x
    [[a + x,b + x],[c + x]]

    >>> over (mapped._2) length [("hello","world"),("leaders","!!!")]
    [("hello",5),("leaders",3)]

    mapped :: Functor f => Setter (f a) (f b) a b

If you want an `IndexPreservingSetter` use ``setting` `fmap``.

lifted :: Monad m => Setter (m a) (m b) a b Source #

This `setter` can be used to modify all of the values in a `Monad`.

You sometimes have to use this rather than `mapped` -- due to temporary insanity `Functor` was not a superclass of `Monad` until GHC 7.10.

    liftM ≡ over lifted

    >>> over lifted f [a,b,c]
    [f a,f b,f c]

    >>> set lifted b (Just a)
    Just b

If you want an `IndexPreservingSetter` use ``setting` `liftM``.

contramapped :: Contravariant f => Setter (f b) (f a) a b Source #

This `Setter` can be used to map over all of the inputs to a `Contravariant`.

    contramap ≡ over contramapped

    >>> getPredicate (over contramapped (*2) (Predicate even)) 5
    True

    >>> getOp (over contramapped (*5) (Op show)) 100
    "500"

    >>> Prelude.map ($ 1) $ over (mapped . _Unwrapping' Op . contramapped) (*12) [(*2),(+1),(^3)]
    [24,13,1728]

argument :: Profunctor p => Setter (p b r) (p a r) a b Source #

This `Setter` can be used to map over the input of a `Profunctor`.

The most common `Profunctor` to use this with is `(->)`.

    >>> (argument %~ f) g x
    g (f x)

    >>> (argument %~ show) length [1,2,3]
    7

    >>> (argument %~ f) h x y
    h (f x) y

Map over the argument of the result of a function -- i.e., its second argument:

    >>> (mapped.argument %~ f) h x y
    h x (f y)

    argument :: Setter (b -> r) (a -> r) a b

setting :: ((a -> b) -> s -> t) -> IndexPreservingSetter s t a b Source #

Build an index-preserving `Setter` from a map-like function.

Your supplied function `f` is required to satisfy:

    f id ≡ id
    f g . f h ≡ f (g . h)

Equational reasoning:

    setting . over ≡ id
    over . setting ≡ id

Another way to view `sets` is that it takes a "semantic editor combinator" and transforms it into a `Setter`.

    setting :: ((a -> b) -> s -> t) -> Setter s t a b

sets :: (Profunctor p, Profunctor q, Settable f) => (p a b -> q s t) -> Optical p q f s t a b Source #

Build a `Setter`, `IndexedSetter` or `IndexPreservingSetter` depending on your choice of `Profunctor`.

    sets :: ((a -> b) -> s -> t) -> Setter s t a b

cloneSetter :: ASetter s t a b -> Setter s t a b Source #

Restore `ASetter` to a full `Setter`.

cloneIndexPreservingSetter :: ASetter s t a b -> IndexPreservingSetter s t a b Source #

Build an `IndexPreservingSetter` from any `Setter`.

cloneIndexedSetter :: AnIndexedSetter i s t a b -> IndexedSetter i s t a b Source #

Clone an `IndexedSetter`.

over :: ASetter s t a b -> (a -> b) -> s -> t Source #

Modify the target of a `Lens` or all the targets of a `Setter` or `Traversal` with a function.

    fmap ≡ over mapped
    fmapDefault ≡ over traverse
    sets . over ≡ id
    over . sets ≡ id

Given any valid `Setter` `l`, you can also rely on the law:

    over l f . over l g = over l (f . g)

e.g.

    >>> over mapped f (over mapped g [a,b,c]) == over mapped (f . g) [a,b,c]
    True

Another way to view `over` is to say that it transforms a `Setter` into a "semantic editor combinator".

    >>> over mapped f (Just a)
    Just (f a)

    >>> over mapped (*10) [1,2,3]
    [10,20,30]

    >>> over _1 f (a,b)
    (f a,b)

    >>> over _1 show (10,20)
    ("10",20)

    over :: Setter s t a b -> (a -> b) -> s -> t
    over :: ASetter s t a b -> (a -> b) -> s -> t

set :: ASetter s t a b -> b -> s -> t Source #

Replace the target of a `Lens` or all of the targets of a `Setter` or `Traversal` with a constant value.

    (<$) ≡ set mapped

    >>> set _2 "hello" (1,())
    (1,"hello")

    >>> set mapped () [1,2,3,4]
    [(),(),(),()]

Note: Attempting to `set` a `Fold` or `Getter` will fail at compile time with an relatively nice error message.

    set :: Setter s t a b    -> b -> s -> t
    set :: Iso s t a b       -> b -> s -> t
    set :: Lens s t a b      -> b -> s -> t
    set :: Traversal s t a b -> b -> s -> t

set' :: ASetter' s a -> a -> s -> s Source #

Replace the target of a `Lens` or all of the targets of a `Setter'` or `Traversal` with a constant value, without changing its type.

This is a type restricted version of `set`, which retains the type of the original.

    >>> set' mapped x [a,b,c,d]
    [x,x,x,x]

    >>> set' _2 "hello" (1,"world")
    (1,"hello")

    >>> set' mapped 0 [1,2,3,4]
    [0,0,0,0]

Note: Attempting to adjust `set'` a `Fold` or `Getter` will fail at compile time with an relatively nice error message.

    set' :: Setter' s a    -> a -> s -> s
    set' :: Iso' s a       -> a -> s -> s
    set' :: Lens' s a      -> a -> s -> s
    set' :: Traversal' s a -> a -> s -> s

assign :: MonadState s m => ASetter s s a b -> b -> m () Source #

Replace the target of a `Lens` or all of the targets of a `Setter` or `Traversal` in our monadic state with a new value, irrespective of the old.

This is an alias for (`.=`).

    >>> execState (do assign _1 c; assign _2 d) (a,b)
    (c,d)

    >>> execState (both .= c) (a,b)
    (c,c)

    assign :: MonadState s m => Iso' s a       -> a -> m ()
    assign :: MonadState s m => Lens' s a      -> a -> m ()
    assign :: MonadState s m => Traversal' s a -> a -> m ()
    assign :: MonadState s m => Setter' s a    -> a -> m ()

modifying :: MonadState s m => ASetter s s a b -> (a -> b) -> m () Source #

This is an alias for (`%=`).

scribe :: (MonadWriter t m, Monoid s) => ASetter s t a b -> b -> m () Source #

Write to a fragment of a larger `Writer` format.

passing :: MonadWriter w m => Setter w w u v -> m (a, u -> v) -> m a Source #

This is a generalization of `pass` that allows you to modify just a portion of the resulting `MonadWriter`.

ipassing :: MonadWriter w m => IndexedSetter i w w u v -> m (a, i -> u -> v) -> m a Source #

This is a generalization of `pass` that allows you to modify just a portion of the resulting `MonadWriter` with access to the index of an `IndexedSetter`.

censoring :: MonadWriter w m => Setter w w u v -> (u -> v) -> m a -> m a Source #

This is a generalization of `censor` that allows you to `censor` just a portion of the resulting `MonadWriter`.

icensoring :: MonadWriter w m => IndexedSetter i w w u v -> (i -> u -> v) -> m a -> m a Source #

This is a generalization of `censor` that allows you to `censor` just a portion of the resulting `MonadWriter`, with access to the index of an `IndexedSetter`.

locally :: MonadReader s m => ASetter s s a b -> (a -> b) -> m r -> m r Source #

Modify the value of the `Reader` environment associated with the target of a `Setter`, `Lens`, or `Traversal`.

    locally l id a ≡ a
    locally l f . locally l g ≡ locally l (f . g)

    >>> (1,1) & locally _1 (+1) (uncurry (+))
    3

    >>> "," & locally ($) ("Hello" <>) (<> " world!")
    "Hello, world!"

    locally :: MonadReader s m => Iso s s a b       -> (a -> b) -> m r -> m r
    locally :: MonadReader s m => Lens s s a b      -> (a -> b) -> m r -> m r
    locally :: MonadReader s m => Traversal s s a b -> (a -> b) -> m r -> m r
    locally :: MonadReader s m => Setter s s a b    -> (a -> b) -> m r -> m r

ilocally :: MonadReader s m => AnIndexedSetter i s s a b -> (i -> a -> b) -> m r -> m r Source #

This is a generalization of `locally` that allows one to make indexed `local` changes to a `Reader` environment associated with the target of a `Setter`, `Lens`, or `Traversal`.

    locally l f ≡ ilocally l f . const
    ilocally l f ≡ locally l f . Indexed

    ilocally :: MonadReader s m => IndexedLens s s a b      -> (i -> a -> b) -> m r -> m r
    ilocally :: MonadReader s m => IndexedTraversal s s a b -> (i -> a -> b) -> m r -> m r
    ilocally :: MonadReader s m => IndexedSetter s s a b    -> (i -> a -> b) -> m r -> m r

iover :: AnIndexedSetter i s t a b -> (i -> a -> b) -> s -> t Source #

Map with index. This is an alias for `imapOf`.

When you do not need access to the index, then `over` is more liberal in what it can accept.

    over l ≡ iover l . const
    iover l ≡ over l . Indexed

    iover :: IndexedSetter i s t a b    -> (i -> a -> b) -> s -> t
    iover :: IndexedLens i s t a b      -> (i -> a -> b) -> s -> t
    iover :: IndexedTraversal i s t a b -> (i -> a -> b) -> s -> t

iset :: AnIndexedSetter i s t a b -> (i -> b) -> s -> t Source #

Set with index. Equivalent to `iover` with the current value ignored.

When you do not need access to the index, then `set` is more liberal in what it can accept.

    set l ≡ iset l . const

    iset :: IndexedSetter i s t a b    -> (i -> b) -> s -> t
    iset :: IndexedLens i s t a b      -> (i -> b) -> s -> t
    iset :: IndexedTraversal i s t a b -> (i -> b) -> s -> t

isets :: ((i -> a -> b) -> s -> t) -> IndexedSetter i s t a b Source #

Build an `IndexedSetter` from an `imap`-like function.

Your supplied function `f` is required to satisfy:

    f id ≡ id
    f g . f h ≡ f (g . h)

Equational reasoning:

    isets . iover ≡ id
    iover . isets ≡ id

Another way to view `isets` is that it takes a "semantic editor combinator" which has been modified to carry an index and transforms it into a `IndexedSetter`.

imodifying :: MonadState s m => AnIndexedSetter i s s a b -> (i -> a -> b) -> m () Source #

This is an alias for (`%@=`).

assignA :: Arrow p => ASetter s t a b -> p s b -> p s t Source #

Run an arrow command and use the output to set all the targets of a `Lens`, `Setter` or `Traversal` to the result.

`assignA` can be used very similarly to (`<~`), except that the type of the object being modified can change; for example:

    runKleisli action ((), (), ()) where
      action =      assignA _1 (Kleisli (const getVal1))
               >>> assignA _2 (Kleisli (const getVal2))
               >>> assignA _3 (Kleisli (const getVal3))
      getVal1 :: Either String Int
      getVal1 = ...
      getVal2 :: Either String Bool
      getVal2 = ...
      getVal3 :: Either String Char
      getVal3 = ...

has the type ``Either` `String` (`Int`, `Bool`, `Char`)`

    assignA :: Arrow p => Iso s t a b       -> p s b -> p s t
    assignA :: Arrow p => Lens s t a b      -> p s b -> p s t
    assignA :: Arrow p => Traversal s t a b -> p s b -> p s t
    assignA :: Arrow p => Setter s t a b    -> p s b -> p s t

mapOf :: ASetter s t a b -> (a -> b) -> s -> t Source #

Deprecated: Use `over`

`mapOf` is a deprecated alias for `over`.

imapOf :: AnIndexedSetter i s t a b -> (i -> a -> b) -> s -> t Source #

Deprecated: Use `iover`

Map with index. (Deprecated alias for `iover`).

When you do not need access to the index, then `mapOf` is more liberal in what it can accept.

    mapOf l ≡ imapOf l . const

    imapOf :: IndexedSetter i s t a b    -> (i -> a -> b) -> s -> t
    imapOf :: IndexedLens i s t a b      -> (i -> a -> b) -> s -> t
    imapOf :: IndexedTraversal i s t a b -> (i -> a -> b) -> s -> t

type AnIndexedLens' i s a = AnIndexedLens i s s a a Source #

    type AnIndexedLens' = Simple (AnIndexedLens i)

type AnIndexedLens i s t a b = Optical (Indexed i) (->) (Pretext (Indexed i) a b) s t a b Source #

When you see this as an argument to a function, it expects an `IndexedLens`

type ALens' s a = ALens s s a a Source #

    type ALens' = Simple ALens

type ALens s t a b = LensLike (Pretext (->) a b) s t a b Source #

When you see this as an argument to a function, it expects a `Lens`.

This type can also be used when you need to store a `Lens` in a container, since it is rank-1. You can turn them back into a `Lens` with `cloneLens`, or use it directly with combinators like `storing` and (`^#`).

lens :: (s -> a) -> (s -> b -> t) -> Lens s t a b Source #

Build a `Lens` from a getter and a setter.

    lens :: Functor f => (s -> a) -> (s -> b -> t) -> (a -> f b) -> s -> f t

    >>> s ^. lens getter setter
    getter s

    >>> s & lens getter setter .~ b
    setter s b

    >>> s & lens getter setter %~ f
    setter s (f (getter s))

    lens :: (s -> a) -> (s -> a -> s) -> Lens' s a

withLens :: forall s t a b rep (r :: TYPE rep). ALens s t a b -> ((s -> a) -> (s -> b -> t) -> r) -> r Source #

Obtain a getter and a setter from a lens, reversing `lens`.

iplens :: (s -> a) -> (s -> b -> t) -> IndexPreservingLens s t a b Source #

Build an index-preserving `Lens` from a `Getter` and a `Setter`.

ilens :: (s -> (i, a)) -> (s -> b -> t) -> IndexedLens i s t a b Source #

Build an `IndexedLens` from a `Getter` and a `Setter`.

inside :: Corepresentable p => ALens s t a b -> Lens (p e s) (p e t) (p e a) (p e b) Source #

Lift a `Lens` so it can run under a function (or other corepresentable profunctor).

    inside :: Lens s t a b -> Lens (e -> s) (e -> t) (e -> a) (e -> b)

    >>> (\x -> (x-1,x+1)) ^. inside _1 $ 5
    4

    >>> runState (modify (1:) >> modify (2:)) ^. (inside _2) $ []
    [2,1]

choosing :: Functor f => LensLike f s t a b -> LensLike f s' t' a b -> LensLike f (Either s s') (Either t t') a b Source #

Merge two lenses, getters, setters, folds or traversals.

    chosen ≡ choosing id id

    choosing :: Getter s a     -> Getter s' a     -> Getter (Either s s') a
    choosing :: Fold s a       -> Fold s' a       -> Fold (Either s s') a
    choosing :: Lens' s a      -> Lens' s' a      -> Lens' (Either s s') a
    choosing :: Traversal' s a -> Traversal' s' a -> Traversal' (Either s s') a
    choosing :: Setter' s a    -> Setter' s' a    -> Setter' (Either s s') a

chosen :: IndexPreservingLens (Either a a) (Either b b) a b Source #

This is a `Lens` that updates either side of an `Either`, where both sides have the same type.

    chosen ≡ choosing id id

    >>> Left a^.chosen
    a

    >>> Right a^.chosen
    a

    >>> Right "hello"^.chosen
    "hello"

    >>> Right a & chosen *~ b
    Right (a * b)

    chosen :: Lens (Either a a) (Either b b) a b
    chosen f (Left a)  = Left <$> f a
    chosen f (Right a) = Right <$> f a

alongside :: LensLike (AlongsideLeft f b') s t a b -> LensLike (AlongsideRight f t) s' t' a' b' -> LensLike f (s, s') (t, t') (a, a') (b, b') Source #

`alongside` makes a `Lens` from two other lenses or a `Getter` from two other getters by executing them on their respective halves of a product.

    >>> (Left a, Right b)^.alongside chosen chosen
    (a,b)

    >>> (Left a, Right b) & alongside chosen chosen .~ (c,d)
    (Left c,Right d)

    alongside :: Lens   s t a b -> Lens   s' t' a' b' -> Lens   (s,s') (t,t') (a,a') (b,b')
    alongside :: Getter s   a   -> Getter s'    a'    -> Getter (s,s')        (a,a')

locus :: IndexedComonadStore p => Lens (p a c s) (p b c s) a b Source #

This `Lens` lets you `view` the current `pos` of any indexed store comonad and `seek` to a new position. This reduces the API for working these instances to a single `Lens`.

    ipos w ≡ w ^. locus
    iseek s w ≡ w & locus .~ s
    iseeks f w ≡ w & locus %~ f

    locus :: Lens' (Context' a s) a
    locus :: Conjoined p => Lens' (Pretext' p a s) a
    locus :: Conjoined p => Lens' (PretextT' p g a s) a

cloneLens :: ALens s t a b -> Lens s t a b Source #

Cloning a `Lens` is one way to make sure you aren't given something weaker, such as a `Traversal` and can be used as a way to pass around lenses that have to be monomorphic in `f`.

Note: This only accepts a proper `Lens`.

    >>> let example l x = set (cloneLens l) (x^.cloneLens l + 1) x in example _2 ("hello",1,"you")
    ("hello",2,"you")

cloneIndexPreservingLens :: ALens s t a b -> IndexPreservingLens s t a b Source #

Clone a `Lens` as an `IndexedPreservingLens` that just passes through whatever index is on any `IndexedLens`, `IndexedFold`, `IndexedGetter` or `IndexedTraversal` it is composed with.

cloneIndexedLens :: AnIndexedLens i s t a b -> IndexedLens i s t a b Source #

Clone an `IndexedLens` as an `IndexedLens` with the same index.

overA :: Arrow ar => LensLike (Context a b) s t a b -> ar a b -> ar s t Source #

`over` for Arrows.

Unlike `over`, `overA` can't accept a simple `Setter`, but requires a full lens, or close enough.

    >>> overA _1 ((+1) *** (+2)) ((1,2),6)
    ((2,4),6)

    overA :: Arrow ar => Lens s t a b -> ar a b -> ar s t

storing :: ALens s t a b -> b -> s -> t Source #

A version of `set` that works on `ALens`.

    >>> storing _2 "world" ("hello","there")
    ("hello","world")

devoid :: Over p f Void Void a b Source #

There is a field for every type in the `Void`. Very zen.

    >>> [] & mapped.devoid +~ 1
    []

    >>> Nothing & mapped.devoid %~ abs
    Nothing

    devoid :: Lens' Void a

united :: Lens' a () Source #

We can always retrieve a `()` from any type.

    >>> "hello"^.united
    ()

    >>> "hello" & united .~ ()
    "hello"

head1 :: Traversable1 t => Lens' (t a) a Source #

A `Lens` focusing on the first element of a `Traversable1` container.

    >>> 2 :| [3, 4] & head1 +~ 10
    12 :| [3,4]

    >>> Identity True ^. head1
    True

last1 :: Traversable1 t => Lens' (t a) a Source #

A `Lens` focusing on the last element of a `Traversable1` container.

    >>> 2 :| [3, 4] & last1 +~ 10
    2 :| [3,14]

    >>> Node 'a' [Node 'b' [], Node 'c' []] ^. last1
    'c'

fusing :: Functor f => LensLike (Yoneda f) s t a b -> LensLike f s t a b Source #

Fuse a composition of lenses using `Yoneda` to provide `fmap` fusion.

In general, given a pair of lenses `foo` and `bar`

    fusing (foo.bar) = foo.bar

however, `foo` and `bar` are either going to `fmap` internally or they are trivial.

`fusing` exploits the `Yoneda` lemma to merge these separate uses into a single `fmap`.

This is particularly effective when the choice of functor `f` is unknown at compile time or when the `Lens` `foo.bar` in the above description is recursive or complex enough to prevent inlining.

    fusing :: Lens s t a b -> Lens s t a b

class Field19 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 19th field of a tuple.

Minimal complete definition

Nothing

Methods

_19 :: Lens s t a b Source #

Access the 19th field of a tuple.

default _19 :: (Generic s, Generic t, GIxed N18 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field19 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s') s s' Source # |
Instance details Defined in Control.Lens.Tuple Methods _19 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s') s s' Source #

class Field18 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 18th field of a tuple.

Minimal complete definition

Nothing

Methods

_18 :: Lens s t a b Source #

Access the 18th field of a tuple.

default _18 :: (Generic s, Generic t, GIxed N17 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field18 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r') r r' Source # |
Instance details Defined in Control.Lens.Tuple Methods _18 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r') r r' Source #
Field18 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r', s) r r' Source # |
Instance details Defined in Control.Lens.Tuple Methods _18 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r', s) r r' Source #

class Field17 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 17th field of a tuple.

Minimal complete definition

Nothing

Methods

_17 :: Lens s t a b Source #

Access the 17th field of a tuple.

default _17 :: (Generic s, Generic t, GIxed N16 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field17 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q') q q' Source # |
Instance details Defined in Control.Lens.Tuple Methods _17 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q') q q' Source #
Field17 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q', r) q q' Source # |
Instance details Defined in Control.Lens.Tuple Methods _17 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q', r) q q' Source #
Field17 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q', r, s) q q' Source # |
Instance details Defined in Control.Lens.Tuple Methods _17 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q', r, s) q q' Source #

class Field16 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 16th field of a tuple.

Minimal complete definition

Nothing

Methods

_16 :: Lens s t a b Source #

Access the 16th field of a tuple.

default _16 :: (Generic s, Generic t, GIxed N15 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field16 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p') p p' Source # |
Instance details Defined in Control.Lens.Tuple Methods _16 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p') p p' Source #
Field16 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p', q) p p' Source # |
Instance details Defined in Control.Lens.Tuple Methods _16 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p', q) p p' Source #
Field16 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p', q, r) p p' Source # |
Instance details Defined in Control.Lens.Tuple Methods _16 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p', q, r) p p' Source #
Field16 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p', q, r, s) p p' Source # |
Instance details Defined in Control.Lens.Tuple Methods _16 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p', q, r, s) p p' Source #

class Field15 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 15th field of a tuple.

Minimal complete definition

Nothing

Methods

_15 :: Lens s t a b Source #

Access the 15th field of a tuple.

default _15 :: (Generic s, Generic t, GIxed N14 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field15 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o') o o' Source # |
Instance details Defined in Control.Lens.Tuple Methods _15 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o') o o' Source #
Field15 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p) o o' Source # |
Instance details Defined in Control.Lens.Tuple Methods _15 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p) o o' Source #
Field15 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p, q) o o' Source # |
Instance details Defined in Control.Lens.Tuple Methods _15 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p, q) o o' Source #
Field15 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p, q, r) o o' Source # |
Instance details Defined in Control.Lens.Tuple Methods _15 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p, q, r) o o' Source #
Field15 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p, q, r, s) o o' Source # |
Instance details Defined in Control.Lens.Tuple Methods _15 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o', p, q, r, s) o o' Source #

class Field14 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 14th field of a tuple.

Minimal complete definition

Nothing

Methods

_14 :: Lens s t a b Source #

Access the 14th field of a tuple.

default _14 :: (Generic s, Generic t, GIxed N13 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field14 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n') n n' Source # |
Instance details Defined in Control.Lens.Tuple Methods _14 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n') n n' Source #
Field14 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o) n n' Source # |
Instance details Defined in Control.Lens.Tuple Methods _14 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o) n n' Source #
Field14 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p) n n' Source # |
Instance details Defined in Control.Lens.Tuple Methods _14 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p) n n' Source #
Field14 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p, q) n n' Source # |
Instance details Defined in Control.Lens.Tuple Methods _14 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p, q) n n' Source #
Field14 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p, q, r) n n' Source # |
Instance details Defined in Control.Lens.Tuple Methods _14 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p, q, r) n n' Source #
Field14 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p, q, r, s) n n' Source # |
Instance details Defined in Control.Lens.Tuple Methods _14 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m, n', o, p, q, r, s) n n' Source #

class Field13 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 13th field of a tuple.

Minimal complete definition

Nothing

Methods

_13 :: Lens s t a b Source #

Access the 13th field of a tuple.

default _13 :: (Generic s, Generic t, GIxed N12 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field13 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j, kk, l, m') m m' Source # |
Instance details Defined in Control.Lens.Tuple Methods _13 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j, kk, l, m') m m' Source #
Field13 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n) m m' Source # |
Instance details Defined in Control.Lens.Tuple Methods _13 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n) m m' Source #
Field13 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o) m m' Source # |
Instance details Defined in Control.Lens.Tuple Methods _13 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o) m m' Source #
Field13 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p) m m' Source # |
Instance details Defined in Control.Lens.Tuple Methods _13 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p) m m' Source #
Field13 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p, q) m m' Source # |
Instance details Defined in Control.Lens.Tuple Methods _13 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p, q) m m' Source #
Field13 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p, q, r) m m' Source # |
Instance details Defined in Control.Lens.Tuple Methods _13 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p, q, r) m m' Source #
Field13 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p, q, r, s) m m' Source # |
Instance details Defined in Control.Lens.Tuple Methods _13 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l, m', n, o, p, q, r, s) m m' Source #

class Field12 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 12th field of a tuple.

Minimal complete definition

Nothing

Methods

_12 :: Lens s t a b Source #

Access the 12th field of a tuple.

default _12 :: (Generic s, Generic t, GIxed N11 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field12 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i, j, kk, l') l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i, j, kk, l') l l' Source #
Field12 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j, kk, l', m) l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j, kk, l', m) l l' Source #
Field12 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n) l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n) l l' Source #
Field12 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o) l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o) l l' Source #
Field12 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p) l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p) l l' Source #
Field12 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p, q) l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p, q) l l' Source #
Field12 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p, q, r) l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p, q, r) l l' Source #
Field12 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p, q, r, s) l l' Source # |
Instance details Defined in Control.Lens.Tuple Methods _12 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk, l', m, n, o, p, q, r, s) l l' Source #

class Field11 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 11th field of a tuple.

Minimal complete definition

Nothing

Methods

_11 :: Lens s t a b Source #

Access the 11th field of a tuple.

default _11 :: (Generic s, Generic t, GIxed N10 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field11 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h, i, j, kk') kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h, i, j, kk') kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i, j, kk', l) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i, j, kk', l) kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j, kk', l, m) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j, kk', l, m) kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n) kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o) kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p) kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p, q) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p, q) kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p, q, r) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p, q, r) kk kk' Source #
Field11 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p, q, r, s) kk kk' Source # |
Instance details Defined in Control.Lens.Tuple Methods _11 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j, kk', l, m, n, o, p, q, r, s) kk kk' Source #

class Field10 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 10th field of a tuple.

Minimal complete definition

Nothing

Methods

_10 :: Lens s t a b Source #

Access the 10th field of a tuple.

default _10 :: (Generic s, Generic t, GIxed N9 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field10 (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g, h, i, j') j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g, h, i, j') j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h, i, j', kk) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h, i, j', kk) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i, j', kk, l) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i, j', kk, l) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j', kk, l, m) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i, j', kk, l, m) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p, q) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p, q) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p, q, r) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p, q, r) j j' Source #
Field10 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p, q, r, s) j j' Source # |
Instance details Defined in Control.Lens.Tuple Methods _10 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i, j', kk, l, m, n, o, p, q, r, s) j j' Source #

class Field9 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 9th field of a tuple.

Minimal complete definition

Nothing

Methods

_9 :: Lens s t a b Source #

Access the 9th field of a tuple.

default _9 :: (Generic s, Generic t, GIxed N8 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field9 (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f, g, h, i') i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f, g, h, i') i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g, h, i', j) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g, h, i', j) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h, i', j, kk) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h, i', j, kk) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i', j, kk, l) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h, i', j, kk, l) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i', j, kk, l, m) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h, i', j, kk, l, m) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p, q) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p, q) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p, q, r) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p, q, r) i i' Source #
Field9 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p, q, r, s) i i' Source # |
Instance details Defined in Control.Lens.Tuple Methods _9 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h, i', j, kk, l, m, n, o, p, q, r, s) i i' Source #

class Field8 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provide access to the 8th field of a tuple.

Minimal complete definition

Nothing

Methods

_8 :: Lens s t a b Source #

Access the 8th field of a tuple.

default _8 :: (Generic s, Generic t, GIxed N7 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field8 (a, b, c, d, e, f, g, h) (a, b, c, d, e, f, g, h') h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h) (a, b, c, d, e, f, g, h') h h' Source #
Field8 (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f, g, h', i) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f, g, h', i) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g, h', i, j) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g, h', i, j) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h', i, j, kk) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g, h', i, j, kk) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h', i, j, kk, l) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g, h', i, j, kk, l) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h', i, j, kk, l, m) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g, h', i, j, kk, l, m) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p, q) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p, q) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p, q, r) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p, q, r) h h' Source #
Field8 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p, q, r, s) h h' Source # |
Instance details Defined in Control.Lens.Tuple Methods _8 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g, h', i, j, kk, l, m, n, o, p, q, r, s) h h' Source #

class Field7 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provide access to the 7th field of a tuple.

Minimal complete definition

Nothing

Methods

_7 :: Lens s t a b Source #

Access the 7th field of a tuple.

default _7 :: (Generic s, Generic t, GIxed N6 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field7 (a, b, c, d, e, f, g) (a, b, c, d, e, f, g') g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g) (a, b, c, d, e, f, g') g g' Source #
Field7 (a, b, c, d, e, f, g, h) (a, b, c, d, e, f, g', h) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h) (a, b, c, d, e, f, g', h) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f, g', h, i) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f, g', h, i) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g', h, i, j) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g', h, i, j) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g', h, i, j, kk) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f, g', h, i, j, kk) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g', h, i, j, kk, l) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f, g', h, i, j, kk, l) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g', h, i, j, kk, l, m) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f, g', h, i, j, kk, l, m) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p, q) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p, q) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p, q, r) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p, q, r) g g' Source #
Field7 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p, q, r, s) g g' Source # |
Instance details Defined in Control.Lens.Tuple Methods _7 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f, g', h, i, j, kk, l, m, n, o, p, q, r, s) g g' Source #

class Field6 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 6th element of a tuple.

Minimal complete definition

Nothing

Methods

_6 :: Lens s t a b Source #

Access the 6th field of a tuple.

default _6 :: (Generic s, Generic t, GIxed N5 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field6 (a, b, c, d, e, f) (a, b, c, d, e, f') f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f) (a, b, c, d, e, f') f f' Source #
Field6 (a, b, c, d, e, f, g) (a, b, c, d, e, f', g) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g) (a, b, c, d, e, f', g) f f' Source #
Field6 (a, b, c, d, e, f, g, h) (a, b, c, d, e, f', g, h) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h) (a, b, c, d, e, f', g, h) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f', g, h, i) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f', g, h, i) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f', g, h, i, j) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f', g, h, i, j) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f', g, h, i, j, kk) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e, f', g, h, i, j, kk) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f', g, h, i, j, kk, l) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e, f', g, h, i, j, kk, l) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f', g, h, i, j, kk, l, m) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e, f', g, h, i, j, kk, l, m) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p, q) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p, q) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p, q, r) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p, q, r) f f' Source #
Field6 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p, q, r, s) f f' Source # |
Instance details Defined in Control.Lens.Tuple Methods _6 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e, f', g, h, i, j, kk, l, m, n, o, p, q, r, s) f f' Source #

class Field5 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 5th field of a tuple.

Minimal complete definition

Nothing

Methods

_5 :: Lens s t a b Source #

Access the 5th field of a tuple.

default _5 :: (Generic s, Generic t, GIxed N4 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field5 (a, b, c, d, e) (a, b, c, d, e') e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e) (a, b, c, d, e') e e' Source #
Field5 (a, b, c, d, e, f) (a, b, c, d, e', f) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f) (a, b, c, d, e', f) e e' Source #
Field5 (a, b, c, d, e, f, g) (a, b, c, d, e', f, g) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g) (a, b, c, d, e', f, g) e e' Source #
Field5 (a, b, c, d, e, f, g, h) (a, b, c, d, e', f, g, h) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h) (a, b, c, d, e', f, g, h) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i) (a, b, c, d, e', f, g, h, i) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i) (a, b, c, d, e', f, g, h, i) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e', f, g, h, i, j) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e', f, g, h, i, j) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e', f, g, h, i, j, kk) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d, e', f, g, h, i, j, kk) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e', f, g, h, i, j, kk, l) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d, e', f, g, h, i, j, kk, l) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e', f, g, h, i, j, kk, l, m) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d, e', f, g, h, i, j, kk, l, m) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p, q) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p, q) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p, q, r) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p, q, r) e e' Source #
Field5 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p, q, r, s) e e' Source # |
Instance details Defined in Control.Lens.Tuple Methods _5 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d, e', f, g, h, i, j, kk, l, m, n, o, p, q, r, s) e e' Source #

class Field4 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provide access to the 4th field of a tuple.

Minimal complete definition

Nothing

Methods

_4 :: Lens s t a b Source #

Access the 4th field of a tuple.

default _4 :: (Generic s, Generic t, GIxed N3 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field4 (a, b, c, d) (a, b, c, d') d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d) (a, b, c, d') d d' Source #
Field4 (a, b, c, d, e) (a, b, c, d', e) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e) (a, b, c, d', e) d d' Source #
Field4 (a, b, c, d, e, f) (a, b, c, d', e, f) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f) (a, b, c, d', e, f) d d' Source #
Field4 (a, b, c, d, e, f, g) (a, b, c, d', e, f, g) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g) (a, b, c, d', e, f, g) d d' Source #
Field4 (a, b, c, d, e, f, g, h) (a, b, c, d', e, f, g, h) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h) (a, b, c, d', e, f, g, h) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i) (a, b, c, d', e, f, g, h, i) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i) (a, b, c, d', e, f, g, h, i) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j) (a, b, c, d', e, f, g, h, i, j) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c, d', e, f, g, h, i, j) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d', e, f, g, h, i, j, kk) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c, d', e, f, g, h, i, j, kk) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d', e, f, g, h, i, j, kk, l) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c, d', e, f, g, h, i, j, kk, l) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d', e, f, g, h, i, j, kk, l, m) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c, d', e, f, g, h, i, j, kk, l, m) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p, q) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p, q) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p, q, r) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p, q, r) d d' Source #
Field4 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) d d' Source # |
Instance details Defined in Control.Lens.Tuple Methods _4 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c, d', e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) d d' Source #

class Field3 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 3rd field of a tuple.

Minimal complete definition

Nothing

Methods

_3 :: Lens s t a b Source #

Access the 3rd field of a tuple.

default _3 :: (Generic s, Generic t, GIxed N2 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field3 (a, b, c) (a, b, c') c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c) (a, b, c') c c' Source #
Field3 (a, b, c, d) (a, b, c', d) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d) (a, b, c', d) c c' Source #
Field3 (a, b, c, d, e) (a, b, c', d, e) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e) (a, b, c', d, e) c c' Source #
Field3 (a, b, c, d, e, f) (a, b, c', d, e, f) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f) (a, b, c', d, e, f) c c' Source #
Field3 (a, b, c, d, e, f, g) (a, b, c', d, e, f, g) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g) (a, b, c', d, e, f, g) c c' Source #
Field3 (a, b, c, d, e, f, g, h) (a, b, c', d, e, f, g, h) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h) (a, b, c', d, e, f, g, h) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i) (a, b, c', d, e, f, g, h, i) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i) (a, b, c', d, e, f, g, h, i) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j) (a, b, c', d, e, f, g, h, i, j) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b, c', d, e, f, g, h, i, j) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c', d, e, f, g, h, i, j, kk) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b, c', d, e, f, g, h, i, j, kk) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c', d, e, f, g, h, i, j, kk, l) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b, c', d, e, f, g, h, i, j, kk, l) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c', d, e, f, g, h, i, j, kk, l, m) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b, c', d, e, f, g, h, i, j, kk, l, m) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p, q) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p, q) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) c c' Source #
Field3 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) c c' Source # |
Instance details Defined in Control.Lens.Tuple Methods _3 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b, c', d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) c c' Source #

class Field2 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to the 2nd field of a tuple.

Minimal complete definition

Nothing

Methods

_2 :: Lens s t a b Source #

Access the 2nd field of a tuple.

    >>> _2 .~ "hello" $ (1,(),3,4)
    (1,"hello",3,4)

    >>> (1,2,3,4) & _2 *~ 3
    (1,6,3,4)

    >>> _2 print (1,2)
    2
    (1,())

    anyOf _2 :: (s -> Bool) -> (a, s) -> Bool
    traverse . _2 :: (Applicative f, Traversable t) => (a -> f b) -> t (s, a) -> f (t (s, b))
    foldMapOf (traverse . _2) :: (Traversable t, Monoid m) => (s -> m) -> t (b, s) -> m

default _2 :: (Generic s, Generic t, GIxed N1 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field2 (a, b) (a, b') b b' Source #

    _2 k ~(a,b) = (\b' -> (a,b')) <$> k b

Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b) (a, b') b b' Source #
Field2 (a, b, c) (a, b', c) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c) (a, b', c) b b' Source #
Field2 (a, b, c, d) (a, b', c, d) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d) (a, b', c, d) b b' Source #
Field2 ((f :*: g) p) ((f :*: g') p) (g p) (g' p) Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens ((f :*: g) p) ((f :*: g') p) (g p) (g' p) Source #
Field2 (Product f g a) (Product f g' a) (g a) (g' a) Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (Product f g a) (Product f g' a) (g a) (g' a) Source #
Field2 (a, b, c, d, e) (a, b', c, d, e) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e) (a, b', c, d, e) b b' Source #
Field2 (a, b, c, d, e, f) (a, b', c, d, e, f) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f) (a, b', c, d, e, f) b b' Source #
Field2 (a, b, c, d, e, f, g) (a, b', c, d, e, f, g) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g) (a, b', c, d, e, f, g) b b' Source #
Field2 (a, b, c, d, e, f, g, h) (a, b', c, d, e, f, g, h) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h) (a, b', c, d, e, f, g, h) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i) (a, b', c, d, e, f, g, h, i) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i) (a, b', c, d, e, f, g, h, i) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j) (a, b', c, d, e, f, g, h, i, j) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j) (a, b', c, d, e, f, g, h, i, j) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk) (a, b', c, d, e, f, g, h, i, j, kk) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a, b', c, d, e, f, g, h, i, j, kk) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b', c, d, e, f, g, h, i, j, kk, l) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a, b', c, d, e, f, g, h, i, j, kk, l) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b', c, d, e, f, g, h, i, j, kk, l, m) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a, b', c, d, e, f, g, h, i, j, kk, l, m) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) b b' Source #
Field2 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) b b' Source # |
Instance details Defined in Control.Lens.Tuple Methods _2 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a, b', c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) b b' Source #

class Field1 s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Provides access to 1st field of a tuple.

Minimal complete definition

Nothing

Methods

_1 :: Lens s t a b Source #

Access the 1st field of a tuple (and possibly change its type).

    >>> (1,2)^._1
    1

    >>> _1 .~ "hello" $ (1,2)
    ("hello",2)

    >>> (1,2) & _1 .~ "hello"
    ("hello",2)

    >>> _1 putStrLn ("hello","world")
    hello
    ((),"world")

This can also be used on larger tuples as well:

    >>> (1,2,3,4,5) & _1 +~ 41
    (42,2,3,4,5)

    _1 :: Lens (a,b) (a',b) a a'
    _1 :: Lens (a,b,c) (a',b,c) a a'
    _1 :: Lens (a,b,c,d) (a',b,c,d) a a'
    ...
    _1 :: Lens (a,b,c,d,e,f,g,h,i) (a',b,c,d,e,f,g,h,i) a a'

default _1 :: (Generic s, Generic t, GIxed N0 (Rep s) (Rep t) a b) => Lens s t a b Source #

#### Instances

Instances details

Field1 (Identity a) (Identity b) a b Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (Identity a) (Identity b) a b Source #

Field1 (a, b) (a', b) a a' Source #

    _1 k ~(a,b) = (\a' -> (a',b)) <$> k a

Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b) (a', b) a a' Source #
Field1 (a, b, c) (a', b, c) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c) (a', b, c) a a' Source #
Field1 (a, b, c, d) (a', b, c, d) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d) (a', b, c, d) a a' Source #
Field1 ((f :*: g) p) ((f' :*: g) p) (f p) (f' p) Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens ((f :*: g) p) ((f' :*: g) p) (f p) (f' p) Source #
Field1 (Product f g a) (Product f' g a) (f a) (f' a) Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (Product f g a) (Product f' g a) (f a) (f' a) Source #
Field1 (a, b, c, d, e) (a', b, c, d, e) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e) (a', b, c, d, e) a a' Source #
Field1 (a, b, c, d, e, f) (a', b, c, d, e, f) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f) (a', b, c, d, e, f) a a' Source #
Field1 (a, b, c, d, e, f, g) (a', b, c, d, e, f, g) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g) (a', b, c, d, e, f, g) a a' Source #
Field1 (a, b, c, d, e, f, g, h) (a', b, c, d, e, f, g, h) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h) (a', b, c, d, e, f, g, h) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i) (a', b, c, d, e, f, g, h, i) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i) (a', b, c, d, e, f, g, h, i) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j) (a', b, c, d, e, f, g, h, i, j) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j) (a', b, c, d, e, f, g, h, i, j) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk) (a', b, c, d, e, f, g, h, i, j, kk) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk) (a', b, c, d, e, f, g, h, i, j, kk) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l) (a', b, c, d, e, f, g, h, i, j, kk, l) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l) (a', b, c, d, e, f, g, h, i, j, kk, l) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a', b, c, d, e, f, g, h, i, j, kk, l, m) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m) (a', b, c, d, e, f, g, h, i, j, kk, l, m) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r) a a' Source #
Field1 (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) a a' Source # |
Instance details Defined in Control.Lens.Tuple Methods _1 :: Lens (a, b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) (a', b, c, d, e, f, g, h, i, j, kk, l, m, n, o, p, q, r, s) a a' Source #

_1' :: Field1 s t a b => Lens s t a b Source #

Strict version of `_1`

_2' :: Field2 s t a b => Lens s t a b Source #

Strict version of `_2`

_3' :: Field3 s t a b => Lens s t a b Source #

Strict version of `_3`

_4' :: Field4 s t a b => Lens s t a b Source #

Strict version of `_4`

_5' :: Field5 s t a b => Lens s t a b Source #

Strict version of `_5`

_6' :: Field6 s t a b => Lens s t a b Source #

Strict version of `_6`

_7' :: Field7 s t a b => Lens s t a b Source #

Strict version of `_7`

_8' :: Field8 s t a b => Lens s t a b Source #

Strict version of `_8`

_9' :: Field9 s t a b => Lens s t a b Source #

Strict version of `_9`

_10' :: Field10 s t a b => Lens s t a b Source #

Strict version of `_10`

_11' :: Field11 s t a b => Lens s t a b Source #

Strict version of `_11`

_12' :: Field12 s t a b => Lens s t a b Source #

Strict version of `_12`

_13' :: Field13 s t a b => Lens s t a b Source #

Strict version of `_13`

_14' :: Field14 s t a b => Lens s t a b Source #

Strict version of `_14`

_15' :: Field15 s t a b => Lens s t a b Source #

Strict version of `_15`

_16' :: Field16 s t a b => Lens s t a b Source #

Strict version of `_16`

_17' :: Field17 s t a b => Lens s t a b Source #

Strict version of `_17`

_18' :: Field18 s t a b => Lens s t a b Source #

Strict version of `_18`

_19' :: Field19 s t a b => Lens s t a b Source #

Strict version of `_19`

type Accessing p m s a = p a (Const m a) -> s -> Const m s Source #

This is a convenient alias used when consuming (indexed) getters and (indexed) folds in a highly general fashion.

type IndexedGetting i m s a = Indexed i a (Const m a) -> s -> Const m s Source #

Used to consume an `IndexedFold`.

type Getting r s a = (a -> Const r a) -> s -> Const r s Source #

When you see this in a type signature it indicates that you can pass the function a `Lens`, `Getter`, `Traversal`, `Fold`, `Prism`, `Iso`, or one of the indexed variants, and it will just "do the right thing".

Most `Getter` combinators are able to be used with both a `Getter` or a `Fold` in limited situations, to do so, they need to be monomorphic in what we are going to extract with `Const`. To be compatible with `Lens`, `Traversal` and `Iso` we also restricted choices of the irrelevant `t` and `b` parameters.

If a function accepts a ``Getting` r s a`, then when `r` is a `Monoid`, then you can pass a `Fold` (or `Traversal`), otherwise you can only pass this a `Getter` or `Lens`.

to :: (Profunctor p, Contravariant f) => (s -> a) -> Optic' p f s a Source #

Build an (index-preserving) `Getter` from an arbitrary Haskell function.

    to f . to g ≡ to (g . f)

    a ^. to f ≡ f a

    >>> a ^.to f
    f a

    >>> ("hello","world")^.to snd
    "world"

    >>> 5^.to succ
    6

    >>> (0, -5)^._2.to abs
    5

    to :: (s -> a) -> IndexPreservingGetter s a

ito :: (Indexable i p, Contravariant f) => (s -> (i, a)) -> Over' p f s a Source #

    ito :: (s -> (i, a)) -> IndexedGetter i s a

like :: (Profunctor p, Contravariant f, Functor f) => a -> Optic' p f s a Source #

Build an constant-valued (index-preserving) `Getter` from an arbitrary Haskell value.

    like a . like b ≡ like b
    a ^. like b ≡ b
    a ^. like b ≡ a ^. to (const b)

This can be useful as a second case `failing` a `Fold` e.g. `foo `failing` `like` 0`

    like :: a -> IndexPreservingGetter s a

ilike :: (Indexable i p, Contravariant f, Functor f) => i -> a -> Over' p f s a Source #

    ilike :: i -> a -> IndexedGetter i s a

view :: MonadReader s m => Getting a s a -> m a Source #

View the value pointed to by a `Getter`, `Iso` or `Lens` or the result of folding over all the results of a `Fold` or `Traversal` that points at a monoidal value.

    view . to ≡ id

    >>> view (to f) a
    f a

    >>> view _2 (1,"hello")
    "hello"

    >>> view (to succ) 5
    6

    >>> view (_2._1) ("hello",("world","!!!"))
    "world"

As `view` is commonly used to access the target of a `Getter` or obtain a monoidal summary of the targets of a `Fold`, It may be useful to think of it as having one of these more restricted signatures:

    view ::             Getter s a     -> s -> a
    view :: Monoid m => Fold s m       -> s -> m
    view ::             Iso' s a       -> s -> a
    view ::             Lens' s a      -> s -> a
    view :: Monoid m => Traversal' s m -> s -> m

In a more general setting, such as when working with a `Monad` transformer stack you can use:

    view :: MonadReader s m             => Getter s a     -> m a
    view :: (MonadReader s m, Monoid a) => Fold s a       -> m a
    view :: MonadReader s m             => Iso' s a       -> m a
    view :: MonadReader s m             => Lens' s a      -> m a
    view :: (MonadReader s m, Monoid a) => Traversal' s a -> m a

views :: MonadReader s m => LensLike' (Const r) s a -> (a -> r) -> m r Source #

View a function of the value pointed to by a `Getter` or `Lens` or the result of folding over the result of mapping the targets of a `Fold` or `Traversal`.

    views l f ≡ view (l . to f)

    >>> views (to f) g a
    g (f a)

    >>> views _2 length (1,"hello")
    5

As `views` is commonly used to access the target of a `Getter` or obtain a monoidal summary of the targets of a `Fold`, It may be useful to think of it as having one of these more restricted signatures:

    views ::             Getter s a     -> (a -> r) -> s -> r
    views :: Monoid m => Fold s a       -> (a -> m) -> s -> m
    views ::             Iso' s a       -> (a -> r) -> s -> r
    views ::             Lens' s a      -> (a -> r) -> s -> r
    views :: Monoid m => Traversal' s a -> (a -> m) -> s -> m

In a more general setting, such as when working with a `Monad` transformer stack you can use:

    views :: MonadReader s m             => Getter s a     -> (a -> r) -> m r
    views :: (MonadReader s m, Monoid r) => Fold s a       -> (a -> r) -> m r
    views :: MonadReader s m             => Iso' s a       -> (a -> r) -> m r
    views :: MonadReader s m             => Lens' s a      -> (a -> r) -> m r
    views :: (MonadReader s m, Monoid r) => Traversal' s a -> (a -> r) -> m r

    views :: MonadReader s m => Getting r s a -> (a -> r) -> m r

use :: MonadState s m => Getting a s a -> m a Source #

Use the target of a `Lens`, `Iso`, or `Getter` in the current state, or use a summary of a `Fold` or `Traversal` that points to a monoidal value.

    >>> evalState (use _1) (a,b)
    a

    >>> evalState (use _1) ("hello","world")
    "hello"

    use :: MonadState s m             => Getter s a     -> m a
    use :: (MonadState s m, Monoid r) => Fold s r       -> m r
    use :: MonadState s m             => Iso' s a       -> m a
    use :: MonadState s m             => Lens' s a      -> m a
    use :: (MonadState s m, Monoid r) => Traversal' s r -> m r

uses :: MonadState s m => LensLike' (Const r) s a -> (a -> r) -> m r Source #

Use the target of a `Lens`, `Iso` or `Getter` in the current state, or use a summary of a `Fold` or `Traversal` that points to a monoidal value.

    >>> evalState (uses _1 length) ("hello","world")
    5

    uses :: MonadState s m             => Getter s a     -> (a -> r) -> m r
    uses :: (MonadState s m, Monoid r) => Fold s a       -> (a -> r) -> m r
    uses :: MonadState s m             => Lens' s a      -> (a -> r) -> m r
    uses :: MonadState s m             => Iso' s a       -> (a -> r) -> m r
    uses :: (MonadState s m, Monoid r) => Traversal' s a -> (a -> r) -> m r

    uses :: MonadState s m => Getting r s t a b -> (a -> r) -> m r

listening :: MonadWriter w m => Getting u w u -> m a -> m (a, u) Source #

This is a generalized form of `listen` that only extracts the portion of the log that is focused on by a `Getter`. If given a `Fold` or a `Traversal` then a monoidal summary of the parts of the log that are visited will be returned.

    listening :: MonadWriter w m             => Getter w u     -> m a -> m (a, u)
    listening :: MonadWriter w m             => Lens' w u      -> m a -> m (a, u)
    listening :: MonadWriter w m             => Iso' w u       -> m a -> m (a, u)
    listening :: (MonadWriter w m, Monoid u) => Fold w u       -> m a -> m (a, u)
    listening :: (MonadWriter w m, Monoid u) => Traversal' w u -> m a -> m (a, u)
    listening :: (MonadWriter w m, Monoid u) => Prism' w u     -> m a -> m (a, u)

ilistening :: MonadWriter w m => IndexedGetting i (i, u) w u -> m a -> m (a, (i, u)) Source #

This is a generalized form of `listen` that only extracts the portion of the log that is focused on by a `Getter`. If given a `Fold` or a `Traversal` then a monoidal summary of the parts of the log that are visited will be returned.

    ilistening :: MonadWriter w m             => IndexedGetter i w u     -> m a -> m (a, (i, u))
    ilistening :: MonadWriter w m             => IndexedLens' i w u      -> m a -> m (a, (i, u))
    ilistening :: (MonadWriter w m, Monoid u) => IndexedFold i w u       -> m a -> m (a, (i, u))
    ilistening :: (MonadWriter w m, Monoid u) => IndexedTraversal' i w u -> m a -> m (a, (i, u))

listenings :: MonadWriter w m => Getting v w u -> (u -> v) -> m a -> m (a, v) Source #

This is a generalized form of `listen` that only extracts the portion of the log that is focused on by a `Getter`. If given a `Fold` or a `Traversal` then a monoidal summary of the parts of the log that are visited will be returned.

    listenings :: MonadWriter w m             => Getter w u     -> (u -> v) -> m a -> m (a, v)
    listenings :: MonadWriter w m             => Lens' w u      -> (u -> v) -> m a -> m (a, v)
    listenings :: MonadWriter w m             => Iso' w u       -> (u -> v) -> m a -> m (a, v)
    listenings :: (MonadWriter w m, Monoid v) => Fold w u       -> (u -> v) -> m a -> m (a, v)
    listenings :: (MonadWriter w m, Monoid v) => Traversal' w u -> (u -> v) -> m a -> m (a, v)
    listenings :: (MonadWriter w m, Monoid v) => Prism' w u     -> (u -> v) -> m a -> m (a, v)

ilistenings :: MonadWriter w m => IndexedGetting i v w u -> (i -> u -> v) -> m a -> m (a, v) Source #

This is a generalized form of `listen` that only extracts the portion of the log that is focused on by a `Getter`. If given a `Fold` or a `Traversal` then a monoidal summary of the parts of the log that are visited will be returned.

    ilistenings :: MonadWriter w m             => IndexedGetter w u     -> (i -> u -> v) -> m a -> m (a, v)
    ilistenings :: MonadWriter w m             => IndexedLens' w u      -> (i -> u -> v) -> m a -> m (a, v)
    ilistenings :: (MonadWriter w m, Monoid v) => IndexedFold w u       -> (i -> u -> v) -> m a -> m (a, v)
    ilistenings :: (MonadWriter w m, Monoid v) => IndexedTraversal' w u -> (i -> u -> v) -> m a -> m (a, v)

iview :: MonadReader s m => IndexedGetting i (i, a) s a -> m (i, a) Source #

View the index and value of an `IndexedGetter` into the current environment as a pair.

When applied to an `IndexedFold` the result will most likely be a nonsensical monoidal summary of the indices tupled with a monoidal summary of the values and probably not whatever it is you wanted.

iviews :: MonadReader s m => IndexedGetting i r s a -> (i -> a -> r) -> m r Source #

View a function of the index and value of an `IndexedGetter` into the current environment.

When applied to an `IndexedFold` the result will be a monoidal summary instead of a single answer.

    iviews ≡ ifoldMapOf

iuse :: MonadState s m => IndexedGetting i (i, a) s a -> m (i, a) Source #

Use the index and value of an `IndexedGetter` into the current state as a pair.

When applied to an `IndexedFold` the result will most likely be a nonsensical monoidal summary of the indices tupled with a monoidal summary of the values and probably not whatever it is you wanted.

iuses :: MonadState s m => IndexedGetting i r s a -> (i -> a -> r) -> m r Source #

Use a function of the index and value of an `IndexedGetter` into the current state.

When applied to an `IndexedFold` the result will be a monoidal summary instead of a single answer.

getting :: (Profunctor p, Profunctor q, Functor f, Contravariant f) => Optical p q f s t a b -> Optical' p q f s a Source #

Coerce a `Getter`-compatible `Optical` to an `Optical'`. This is useful when using a `Traversal` that is not simple as a `Getter` or a `Fold`.

    getting :: Traversal s t a b          -> Fold s a
    getting :: Lens s t a b               -> Getter s a
    getting :: IndexedTraversal i s t a b -> IndexedFold i s a
    getting :: IndexedLens i s t a b      -> IndexedGetter i s a

unto :: (Profunctor p, Bifunctor p, Functor f) => (b -> t) -> Optic p f s t a b Source #

An analogue of `to` for `review`.

    unto :: (b -> t) -> Review' t b

    unto = un . to

un :: (Profunctor p, Bifunctor p, Functor f) => Getting a s a -> Optic' p f a s Source #

Turn a `Getter` around to get a `Review`

    un = unto . view
    unto = un . to

    >>> un (to length) # [1,2,3]
    3

re :: AReview t b -> Getter b t Source #

Turn a `Prism` or `Iso` around to build a `Getter`.

If you have an `Iso`, `from` is a more powerful version of this function that will return an `Iso` instead of a mere `Getter`.

    >>> 5 ^.re _Left
    Left 5

    >>> 6 ^.re (_Left.unto succ)
    Left 7

    review  ≡ view  . re
    reviews ≡ views . re
    reuse   ≡ use   . re
    reuses  ≡ uses  . re

    re :: Prism s t a b -> Getter b t
    re :: Iso s t a b   -> Getter b t

review :: MonadReader b m => AReview t b -> m t Source #

This can be used to turn an `Iso` or `Prism` around and `view` a value (or the current environment) through it the other way.

    review ≡ view . re
    review . unto ≡ id

    >>> review _Left "mustard"
    Left "mustard"

    >>> review (unto succ) 5
    6

Usually `review` is used in the `(->)` `Monad` with a `Prism` or `Iso`, in which case it may be useful to think of it as having one of these more restricted type signatures:

    review :: Iso' s a   -> a -> s
    review :: Prism' s a -> a -> s

However, when working with a `Monad` transformer stack, it is sometimes useful to be able to `review` the current environment, in which case it may be beneficial to think of it as having one of these slightly more liberal type signatures:

    review :: MonadReader a m => Iso' s a   -> m s
    review :: MonadReader a m => Prism' s a -> m s

reviews :: MonadReader b m => AReview t b -> (t -> r) -> m r Source #

This can be used to turn an `Iso` or `Prism` around and `view` a value (or the current environment) through it the other way, applying a function.

    reviews ≡ views . re
    reviews (unto f) g ≡ g . f

    >>> reviews _Left isRight "mustard"
    False

    >>> reviews (unto succ) (*2) 3
    8

Usually this function is used in the `(->)` `Monad` with a `Prism` or `Iso`, in which case it may be useful to think of it as having one of these more restricted type signatures:

    reviews :: Iso' s a   -> (s -> r) -> a -> r
    reviews :: Prism' s a -> (s -> r) -> a -> r

However, when working with a `Monad` transformer stack, it is sometimes useful to be able to `review` the current environment, in which case it may be beneficial to think of it as having one of these slightly more liberal type signatures:

    reviews :: MonadReader a m => Iso' s a   -> (s -> r) -> m r
    reviews :: MonadReader a m => Prism' s a -> (s -> r) -> m r

reuse :: MonadState b m => AReview t b -> m t Source #

This can be used to turn an `Iso` or `Prism` around and `use` a value (or the current environment) through it the other way.

    reuse ≡ use . re
    reuse . unto ≡ gets

    >>> evalState (reuse _Left) 5
    Left 5

    >>> evalState (reuse (unto succ)) 5
    6

    reuse :: MonadState a m => Prism' s a -> m s
    reuse :: MonadState a m => Iso' s a   -> m s

reuses :: MonadState b m => AReview t b -> (t -> r) -> m r Source #

This can be used to turn an `Iso` or `Prism` around and `use` the current state through it the other way, applying a function.

    reuses ≡ uses . re
    reuses (unto f) g ≡ gets (g . f)

    >>> evalState (reuses _Left isLeft) (5 :: Int)
    True

    reuses :: MonadState a m => Prism' s a -> (s -> r) -> m r
    reuses :: MonadState a m => Iso' s a   -> (s -> r) -> m r

type APrism' s a = APrism s s a a Source #

    type APrism' = Simple APrism

type APrism s t a b = Market a b a (Identity b) -> Market a b s (Identity t) Source #

If you see this in a signature for a function, the function is expecting a `Prism`.

withPrism :: APrism s t a b -> ((b -> t) -> (s -> Either t a) -> r) -> r Source #

Convert `APrism` to the pair of functions that characterize it.

clonePrism :: APrism s t a b -> Prism s t a b Source #

Clone a `Prism` so that you can reuse the same monomorphically typed `Prism` for different purposes.

See `cloneLens` and `cloneTraversal` for examples of why you might want to do this.

prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b Source #

Build a `Prism`.

``Either` t a` is used instead of ``Maybe` a` to permit the types of `s` and `t` to differ.

prism' :: (b -> s) -> (s -> Maybe a) -> Prism s s a b Source #

This is usually used to build a `Prism'`, when you have to use an operation like `cast` which already returns a `Maybe`.

outside :: Representable p => APrism s t a b -> Lens (p t r) (p s r) (p b r) (p a r) Source #

Use a `Prism` as a kind of first-class pattern.

    outside :: Prism s t a b -> Lens (t -> r) (s -> r) (b -> r) (a -> r)

without :: APrism s t a b -> APrism u v c d -> Prism (Either s u) (Either t v) (Either a c) (Either b d) Source #

Given a pair of prisms, project sums.

Viewing a `Prism` as a co-`Lens`, this combinator can be seen to be dual to `alongside`.

aside :: APrism s t a b -> Prism (e, s) (e, t) (e, a) (e, b) Source #

Use a `Prism` to work over part of a structure.

below :: Traversable f => APrism' s a -> Prism' (f s) (f a) Source #

`lift` a `Prism` through a `Traversable` functor, giving a Prism that matches only if all the elements of the container match the `Prism`.

    >>> [Left 1, Right "foo", Left 4, Right "woot"]^..below _Right
    []

    >>> [Right "hail hydra!", Right "foo", Right "blah", Right "woot"]^..below _Right
    [["hail hydra!","foo","blah","woot"]]

isn't :: APrism s t a b -> s -> Bool Source #

Check to see if this `Prism` doesn't match.

    >>> isn't _Left (Right 12)
    True

    >>> isn't _Left (Left 12)
    False

    >>> isn't _Empty []
    False

    isn't = not . is
    isn't = hasn't

matching :: APrism s t a b -> s -> Either t a Source #

Retrieve the value targeted by a `Prism` or return the original value while allowing the type to change if it does not match.

    >>> matching _Just (Just 12)
    Right 12

    >>> matching _Just (Nothing :: Maybe Int) :: Either (Maybe Bool) Int
    Left Nothing

_Left :: Prism (Either a c) (Either b c) a b Source #

This `Prism` provides a `Traversal` for tweaking the `Left` half of an `Either`:

    >>> over _Left (+1) (Left 2)
    Left 3

    >>> over _Left (+1) (Right 2)
    Right 2

    >>> Right 42 ^._Left :: String
    ""

    >>> Left "hello" ^._Left
    "hello"

It also can be turned around to obtain the embedding into the `Left` half of an `Either`:

    >>> _Left # 5
    Left 5

    >>> 5^.re _Left
    Left 5

_Right :: Prism (Either c a) (Either c b) a b Source #

This `Prism` provides a `Traversal` for tweaking the `Right` half of an `Either`:

    >>> over _Right (+1) (Left 2)
    Left 2

    >>> over _Right (+1) (Right 2)
    Right 3

    >>> Right "hello" ^._Right
    "hello"

    >>> Left "hello" ^._Right :: [Double]
    []

It also can be turned around to obtain the embedding into the `Right` half of an `Either`:

    >>> _Right # 5
    Right 5

    >>> 5^.re _Right
    Right 5

_Just :: Prism (Maybe a) (Maybe b) a b Source #

This `Prism` provides a `Traversal` for tweaking the target of the value of `Just` in a `Maybe`.

    >>> over _Just (+1) (Just 2)
    Just 3

Unlike `traverse` this is a `Prism`, and so you can use it to inject as well:

    >>> _Just # 5
    Just 5

    >>> 5^.re _Just
    Just 5

Interestingly,

    m ^? _Just ≡ m

    >>> Just x ^? _Just
    Just x

    >>> Nothing ^? _Just
    Nothing

_Nothing :: Prism' (Maybe a) () Source #

This `Prism` provides the `Traversal` of a `Nothing` in a `Maybe`.

    >>> Nothing ^? _Nothing
    Just ()

    >>> Just () ^? _Nothing
    Nothing

But you can turn it around and use it to construct `Nothing` as well:

    >>> _Nothing # ()
    Nothing

_Void :: Prism s s a Void Source #

`Void` is a logically uninhabited data type.

This is a `Prism` that will always fail to match.

only :: Eq a => a -> Prism' a () Source #

This `Prism` compares for exact equality with a given value.

    >>> only 4 # ()
    4

    >>> 5 ^? only 4
    Nothing

nearly :: a -> (a -> Bool) -> Prism' a () Source #

This `Prism` compares for approximate equality with a given value and a predicate for testing, an example where the value is the empty list and the predicate checks that a list is empty (same as `_Empty` with the `AsEmpty` list instance):

    >>> nearly [] null # ()
    []
    >>> [1,2,3,4] ^? nearly [] null
    Nothing

    nearly [] null :: Prism' [a] ()

To comply with the `Prism` laws the arguments you supply to `nearly a p` are somewhat constrained.

We assume `p x` holds iff `x ≡ a`. Under that assumption then this is a valid `Prism`.

This is useful when working with a type where you can test equality for only a subset of its values, and the prism selects such a value.

_Show :: (Read a, Show a) => Prism' String a Source #

This is an improper prism for text formatting based on `Read` and `Show`.

This `Prism` is "improper" in the sense that it normalizes the text formatting, but round tripping is idempotent given sane `Read`/`Show` instances.

    >>> _Show # 2
    "2"

    >>> "EQ" ^? _Show :: Maybe Ordering
    Just EQ

    _Show ≡ prism' show readMaybe

folding :: Foldable f => (s -> f a) -> Fold s a Source #

Obtain a `Fold` by lifting an operation that returns a `Foldable` result.

This can be useful to lift operations from `Data.List` and elsewhere into a `Fold`.

    >>> [1,2,3,4]^..folding tail
    [2,3,4]

ifolding :: (Foldable f, Indexable i p, Contravariant g, Applicative g) => (s -> f (i, a)) -> Over p g s t a b Source #

foldring :: (Contravariant f, Applicative f) => ((a -> f a -> f a) -> f a -> s -> f a) -> LensLike f s t a b Source #

Obtain a `Fold` by lifting `foldr` like function.

    >>> [1,2,3,4]^..foldring foldr
    [1,2,3,4]

ifoldring :: (Indexable i p, Contravariant f, Applicative f) => ((i -> a -> f a -> f a) -> f a -> s -> f a) -> Over p f s t a b Source #

Obtain `FoldWithIndex` by lifting `ifoldr` like function.

folded :: Foldable f => IndexedFold Int (f a) a Source #

Obtain a `Fold` from any `Foldable` indexed by ordinal position.

    >>> Just 3^..folded
    [3]

    >>> Nothing^..folded
    []

    >>> [(1,2),(3,4)]^..folded.both
    [1,2,3,4]

folded64 :: Foldable f => IndexedFold Int64 (f a) a Source #

Obtain a `Fold` from any `Foldable` indexed by ordinal position.

repeated :: Apply f => LensLike' f a a Source #

Form a `Fold1` by repeating the input forever.

    repeat ≡ toListOf repeated

    >>> timingOut $ 5^..taking 20 repeated
    [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]

    repeated :: Fold1 a a

replicated :: Int -> Fold a a Source #

A `Fold` that replicates its input `n` times.

    replicate n ≡ toListOf (replicated n)

    >>> 5^..replicated 20
    [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]

cycled :: Apply f => LensLike f s t a b -> LensLike f s t a b Source #

Transform a non-empty `Fold` into a `Fold1` that loops over its elements over and over.

    >>> timingOut $ [1,2,3]^..taking 7 (cycled traverse)
    [1,2,3,1,2,3,1]

    cycled :: Fold1 s a -> Fold1 s a

unfolded :: (b -> Maybe (a, b)) -> Fold b a Source #

Build a `Fold` that unfolds its values from a seed.

    unfoldr ≡ toListOf . unfolded

    >>> 10^..unfolded (\b -> if b == 0 then Nothing else Just (b, b-1))
    [10,9,8,7,6,5,4,3,2,1]

iterated :: Apply f => (a -> a) -> LensLike' f a a Source #

`x `^.` `iterated` f` returns an infinite `Fold1` of repeated applications of `f` to `x`.

    toListOf (iterated f) a ≡ iterate f a

    iterated :: (a -> a) -> Fold1 a a

filtered :: (Choice p, Applicative f) => (a -> Bool) -> Optic' p f a a Source #

Obtain a `Fold` that can be composed with to filter another `Lens`, `Iso`, `Getter`, `Fold` (or `Traversal`).

Note: This is not a legal `Traversal`, unless you are very careful not to invalidate the predicate on the target.

Note: This is also not a legal `Prism`, unless you are very careful not to inject a value that fails the predicate.

As a counter example, consider that given `evens = `filtered` `even`` the second `Traversal` law is violated:

    over evens succ . over evens succ /= over evens (succ . succ)

So, in order for this to qualify as a legal `Traversal` you can only use it for actions that preserve the result of the predicate!

    >>> [1..10]^..folded.filtered even
    [2,4,6,8,10]

This will preserve an index if it is present.

filteredBy :: (Indexable i p, Applicative f) => Getting (First i) a i -> p a (f a) -> a -> f a Source #

Obtain a potentially empty `IndexedTraversal` by taking the first element from another, potentially empty `Fold` and using it as an index.

The resulting optic can be composed with to filter another `Lens`, `Iso`, `Getter`, `Fold` (or `Traversal`).

    >>> [(Just 2, 3), (Nothing, 4)] & mapped . filteredBy (_1 . _Just) <. _2 %@~ (*) :: [(Maybe Int, Int)]
    [(Just 2,6),(Nothing,4)]

    filteredBy :: Fold a i -> IndexedTraversal' i a a

Note: As with `filtered`, this is not a legal `IndexedTraversal`, unless you are very careful not to invalidate the predicate on the target!

takingWhile :: (Conjoined p, Applicative f) => (a -> Bool) -> Over p (TakingWhile p f a a) s t a a -> Over p f s t a a Source #

Obtain a `Fold` by taking elements from another `Fold`, `Lens`, `Iso`, `Getter` or `Traversal` while a predicate holds.

    takeWhile p ≡ toListOf (takingWhile p folded)

    >>> timingOut $ toListOf (takingWhile (<=3) folded) [1..]
    [1,2,3]

    takingWhile :: (a -> Bool) -> Fold s a                         -> Fold s a
    takingWhile :: (a -> Bool) -> Getter s a                       -> Fold s a
    takingWhile :: (a -> Bool) -> Traversal' s a                   -> Fold s a -- * See note below
    takingWhile :: (a -> Bool) -> Lens' s a                        -> Fold s a -- * See note below
    takingWhile :: (a -> Bool) -> Prism' s a                       -> Fold s a -- * See note below
    takingWhile :: (a -> Bool) -> Iso' s a                         -> Fold s a -- * See note below
    takingWhile :: (a -> Bool) -> IndexedTraversal' i s a          -> IndexedFold i s a -- * See note below
    takingWhile :: (a -> Bool) -> IndexedLens' i s a               -> IndexedFold i s a -- * See note below
    takingWhile :: (a -> Bool) -> IndexedFold i s a                -> IndexedFold i s a
    takingWhile :: (a -> Bool) -> IndexedGetter i s a              -> IndexedFold i s a

Note: When applied to a `Traversal`, `takingWhile` yields something that can be used as if it were a `Traversal`, but which is not a `Traversal` per the laws, unless you are careful to ensure that you do not invalidate the predicate when writing back through it.

droppingWhile :: (Conjoined p, Profunctor q, Applicative f) => (a -> Bool) -> Optical p q (Compose (State Bool) f) s t a a -> Optical p q f s t a a Source #

Obtain a `Fold` by dropping elements from another `Fold`, `Lens`, `Iso`, `Getter` or `Traversal` while a predicate holds.

    dropWhile p ≡ toListOf (droppingWhile p folded)

    >>> toListOf (droppingWhile (<=3) folded) [1..6]
    [4,5,6]

    >>> toListOf (droppingWhile (<=3) folded) [1,6,1]
    [6,1]

    droppingWhile :: (a -> Bool) -> Fold s a                         -> Fold s a
    droppingWhile :: (a -> Bool) -> Getter s a                       -> Fold s a
    droppingWhile :: (a -> Bool) -> Traversal' s a                   -> Fold s a                -- see notes
    droppingWhile :: (a -> Bool) -> Lens' s a                        -> Fold s a                -- see notes
    droppingWhile :: (a -> Bool) -> Prism' s a                       -> Fold s a                -- see notes
    droppingWhile :: (a -> Bool) -> Iso' s a                         -> Fold s a                -- see notes

    droppingWhile :: (a -> Bool) -> IndexPreservingTraversal' s a    -> IndexPreservingFold s a -- see notes
    droppingWhile :: (a -> Bool) -> IndexPreservingLens' s a         -> IndexPreservingFold s a -- see notes
    droppingWhile :: (a -> Bool) -> IndexPreservingGetter s a        -> IndexPreservingFold s a
    droppingWhile :: (a -> Bool) -> IndexPreservingFold s a          -> IndexPreservingFold s a

    droppingWhile :: (a -> Bool) -> IndexedTraversal' i s a          -> IndexedFold i s a       -- see notes
    droppingWhile :: (a -> Bool) -> IndexedLens' i s a               -> IndexedFold i s a       -- see notes
    droppingWhile :: (a -> Bool) -> IndexedGetter i s a              -> IndexedFold i s a
    droppingWhile :: (a -> Bool) -> IndexedFold i s a                -> IndexedFold i s a

Note: Many uses of this combinator will yield something that meets the types, but not the laws of a valid `Traversal` or `IndexedTraversal`. The `Traversal` and `IndexedTraversal` laws are only satisfied if the new values you assign to the first target also does not pass the predicate! Otherwise subsequent traversals will visit fewer elements and `Traversal` fusion is not sound.

So for any traversal `t` and predicate `p`, ``droppingWhile` p t` may not be lawful, but `(`dropping` 1 . `droppingWhile` p) t` is. For example:

    >>> let l  :: Traversal' [Int] Int; l  = droppingWhile (<= 1) traverse
    >>> let l' :: Traversal' [Int] Int; l' = dropping 1 l

`l` is not a lawful setter because ``over` l f . `over` l g ≢ `over` l (f . g)`:

    >>> [1,2,3] & l .~ 0 & l .~ 4
    [1,0,0]
    >>> [1,2,3] & l .~ 4
    [1,4,4]

`l'` on the other hand behaves lawfully:

    >>> [1,2,3] & l' .~ 0 & l' .~ 4
    [1,2,4]
    >>> [1,2,3] & l' .~ 4
    [1,2,4]

worded :: Applicative f => IndexedLensLike' Int f String String Source #

A `Fold` over the individual `words` of a `String`.

    worded :: Fold String String
    worded :: Traversal' String String

    worded :: IndexedFold Int String String
    worded :: IndexedTraversal' Int String String

Note: This function type-checks as a `Traversal` but it doesn't satisfy the laws. It's only valid to use it when you don't insert any whitespace characters while traversing, and if your original `String` contains only isolated space characters (and no other characters that count as space, such as non-breaking spaces).

lined :: Applicative f => IndexedLensLike' Int f String String Source #

A `Fold` over the individual `lines` of a `String`.

    lined :: Fold String String
    lined :: Traversal' String String

    lined :: IndexedFold Int String String
    lined :: IndexedTraversal' Int String String

Note: This function type-checks as a `Traversal` but it doesn't satisfy the laws. It's only valid to use it when you don't insert any newline characters while traversing, and if your original `String` contains only isolated newline characters.

foldMapOf :: Getting r s a -> (a -> r) -> s -> r Source #

Map each part of a structure viewed through a `Lens`, `Getter`, `Fold` or `Traversal` to a monoid and combine the results.

    >>> foldMapOf (folded . both . _Just) Sum [(Just 21, Just 21)]
    Sum {getSum = 42}

    foldMap = foldMapOf folded

    foldMapOf ≡ views
    ifoldMapOf l = foldMapOf l . Indexed

    foldMapOf ::                Getter s a      -> (a -> r) -> s -> r
    foldMapOf :: Monoid r    => Fold s a        -> (a -> r) -> s -> r
    foldMapOf :: Semigroup r => Fold1 s a       -> (a -> r) -> s -> r
    foldMapOf ::                Lens' s a       -> (a -> r) -> s -> r
    foldMapOf ::                Iso' s a        -> (a -> r) -> s -> r
    foldMapOf :: Monoid r    => Traversal' s a  -> (a -> r) -> s -> r
    foldMapOf :: Semigroup r => Traversal1' s a -> (a -> r) -> s -> r
    foldMapOf :: Monoid r    => Prism' s a      -> (a -> r) -> s -> r

    foldMapOf :: Getting r s a -> (a -> r) -> s -> r

foldOf :: Getting a s a -> s -> a Source #

Combine the elements of a structure viewed through a `Lens`, `Getter`, `Fold` or `Traversal` using a monoid.

    >>> foldOf (folded.folded) [[Sum 1,Sum 4],[Sum 8, Sum 8],[Sum 21]]
    Sum {getSum = 42}

    fold = foldOf folded

    foldOf ≡ view

    foldOf ::             Getter s m     -> s -> m
    foldOf :: Monoid m => Fold s m       -> s -> m
    foldOf ::             Lens' s m      -> s -> m
    foldOf ::             Iso' s m       -> s -> m
    foldOf :: Monoid m => Traversal' s m -> s -> m
    foldOf :: Monoid m => Prism' s m     -> s -> m

foldrOf :: Getting (Endo r) s a -> (a -> r -> r) -> r -> s -> r Source #

Right-associative fold of parts of a structure that are viewed through a `Lens`, `Getter`, `Fold` or `Traversal`.

    foldr ≡ foldrOf folded

    foldrOf :: Getter s a     -> (a -> r -> r) -> r -> s -> r
    foldrOf :: Fold s a       -> (a -> r -> r) -> r -> s -> r
    foldrOf :: Lens' s a      -> (a -> r -> r) -> r -> s -> r
    foldrOf :: Iso' s a       -> (a -> r -> r) -> r -> s -> r
    foldrOf :: Traversal' s a -> (a -> r -> r) -> r -> s -> r
    foldrOf :: Prism' s a     -> (a -> r -> r) -> r -> s -> r

    ifoldrOf l ≡ foldrOf l . Indexed

    foldrOf :: Getting (Endo r) s a -> (a -> r -> r) -> r -> s -> r

foldlOf :: Getting (Dual (Endo r)) s a -> (r -> a -> r) -> r -> s -> r Source #

Left-associative fold of the parts of a structure that are viewed through a `Lens`, `Getter`, `Fold` or `Traversal`.

    foldl ≡ foldlOf folded

    foldlOf :: Getter s a     -> (r -> a -> r) -> r -> s -> r
    foldlOf :: Fold s a       -> (r -> a -> r) -> r -> s -> r
    foldlOf :: Lens' s a      -> (r -> a -> r) -> r -> s -> r
    foldlOf :: Iso' s a       -> (r -> a -> r) -> r -> s -> r
    foldlOf :: Traversal' s a -> (r -> a -> r) -> r -> s -> r
    foldlOf :: Prism' s a     -> (r -> a -> r) -> r -> s -> r

toListOf :: Getting (Endo [a]) s a -> s -> [a] Source #

Extract a list of the targets of a `Fold`. See also (`^..`).

    toList ≡ toListOf folded
    (^..) ≡ flip toListOf

toNonEmptyOf :: Getting (NonEmptyDList a) s a -> s -> NonEmpty a Source #

Extract a `NonEmpty` of the targets of `Fold1`.

    >>> toNonEmptyOf both1 ("hello", "world")
    "hello" :| ["world"]

    toNonEmptyOf :: Getter s a      -> s -> NonEmpty a
    toNonEmptyOf :: Fold1 s a       -> s -> NonEmpty a
    toNonEmptyOf :: Lens' s a       -> s -> NonEmpty a
    toNonEmptyOf :: Iso' s a        -> s -> NonEmpty a
    toNonEmptyOf :: Traversal1' s a -> s -> NonEmpty a
    toNonEmptyOf :: Prism' s a      -> s -> NonEmpty a

andOf :: Getting All s Bool -> s -> Bool Source #

Returns `True` if every target of a `Fold` is `True`.

    >>> andOf both (True,False)
    False
    >>> andOf both (True,True)
    True

    and ≡ andOf folded

    andOf :: Getter s Bool     -> s -> Bool
    andOf :: Fold s Bool       -> s -> Bool
    andOf :: Lens' s Bool      -> s -> Bool
    andOf :: Iso' s Bool       -> s -> Bool
    andOf :: Traversal' s Bool -> s -> Bool
    andOf :: Prism' s Bool     -> s -> Bool

orOf :: Getting Any s Bool -> s -> Bool Source #

Returns `True` if any target of a `Fold` is `True`.

    >>> orOf both (True,False)
    True
    >>> orOf both (False,False)
    False

    or ≡ orOf folded

    orOf :: Getter s Bool     -> s -> Bool
    orOf :: Fold s Bool       -> s -> Bool
    orOf :: Lens' s Bool      -> s -> Bool
    orOf :: Iso' s Bool       -> s -> Bool
    orOf :: Traversal' s Bool -> s -> Bool
    orOf :: Prism' s Bool     -> s -> Bool

anyOf :: Getting Any s a -> (a -> Bool) -> s -> Bool Source #

Returns `True` if any target of a `Fold` satisfies a predicate.

    >>> anyOf both (=='x') ('x','y')
    True
    >>> import Data.Data.Lens
    >>> anyOf biplate (== "world") (((),2::Int),"hello",("world",11::Int))
    True

    any ≡ anyOf folded

    ianyOf l ≡ anyOf l . Indexed

    anyOf :: Getter s a     -> (a -> Bool) -> s -> Bool
    anyOf :: Fold s a       -> (a -> Bool) -> s -> Bool
    anyOf :: Lens' s a      -> (a -> Bool) -> s -> Bool
    anyOf :: Iso' s a       -> (a -> Bool) -> s -> Bool
    anyOf :: Traversal' s a -> (a -> Bool) -> s -> Bool
    anyOf :: Prism' s a     -> (a -> Bool) -> s -> Bool

allOf :: Getting All s a -> (a -> Bool) -> s -> Bool Source #

Returns `True` if every target of a `Fold` satisfies a predicate.

    >>> allOf both (>=3) (4,5)
    True
    >>> allOf folded (>=2) [1..10]
    False

    all ≡ allOf folded

    iallOf l = allOf l . Indexed

    allOf :: Getter s a     -> (a -> Bool) -> s -> Bool
    allOf :: Fold s a       -> (a -> Bool) -> s -> Bool
    allOf :: Lens' s a      -> (a -> Bool) -> s -> Bool
    allOf :: Iso' s a       -> (a -> Bool) -> s -> Bool
    allOf :: Traversal' s a -> (a -> Bool) -> s -> Bool
    allOf :: Prism' s a     -> (a -> Bool) -> s -> Bool

noneOf :: Getting Any s a -> (a -> Bool) -> s -> Bool Source #

Returns `True` only if no targets of a `Fold` satisfy a predicate.

    >>> noneOf each (is _Nothing) (Just 3, Just 4, Just 5)
    True
    >>> noneOf (folded.folded) (<10) [[13,99,20],[3,71,42]]
    False

    inoneOf l = noneOf l . Indexed

    noneOf :: Getter s a     -> (a -> Bool) -> s -> Bool
    noneOf :: Fold s a       -> (a -> Bool) -> s -> Bool
    noneOf :: Lens' s a      -> (a -> Bool) -> s -> Bool
    noneOf :: Iso' s a       -> (a -> Bool) -> s -> Bool
    noneOf :: Traversal' s a -> (a -> Bool) -> s -> Bool
    noneOf :: Prism' s a     -> (a -> Bool) -> s -> Bool

productOf :: Num a => Getting (Endo (Endo a)) s a -> s -> a Source #

Calculate the `Product` of every number targeted by a `Fold`.

    >>> productOf both (4,5)
    20
    >>> productOf folded [1,2,3,4,5]
    120

    product ≡ productOf folded

This operation may be more strict than you would expect. If you want a lazier version use ``ala` `Product` `.` `foldMapOf``

    productOf :: Num a => Getter s a     -> s -> a
    productOf :: Num a => Fold s a       -> s -> a
    productOf :: Num a => Lens' s a      -> s -> a
    productOf :: Num a => Iso' s a       -> s -> a
    productOf :: Num a => Traversal' s a -> s -> a
    productOf :: Num a => Prism' s a     -> s -> a

sumOf :: Num a => Getting (Endo (Endo a)) s a -> s -> a Source #

Calculate the `Sum` of every number targeted by a `Fold`.

    >>> sumOf both (5,6)
    11
    >>> sumOf folded [1,2,3,4]
    10
    >>> sumOf (folded.both) [(1,2),(3,4)]
    10
    >>> import Data.Data.Lens
    >>> sumOf biplate [(1::Int,[]),(2,[(3::Int,4::Int)])] :: Int
    10

    sum ≡ sumOf folded

This operation may be more strict than you would expect. If you want a lazier version use ``ala` `Sum` `.` `foldMapOf``

    sumOf _1 :: Num a => (a, b) -> a
    sumOf (folded . _1) :: (Foldable f, Num a) => f (a, b) -> a

    sumOf :: Num a => Getter s a     -> s -> a
    sumOf :: Num a => Fold s a       -> s -> a
    sumOf :: Num a => Lens' s a      -> s -> a
    sumOf :: Num a => Iso' s a       -> s -> a
    sumOf :: Num a => Traversal' s a -> s -> a
    sumOf :: Num a => Prism' s a     -> s -> a

traverseOf_ :: Functor f => Getting (Traversed r f) s a -> (a -> f r) -> s -> f () Source #

Traverse over all of the targets of a `Fold` (or `Getter`), computing an `Applicative` (or `Functor`)-based answer, but unlike `traverseOf` do not construct a new structure. `traverseOf_` generalizes `traverse_` to work over any `Fold`.

When passed a `Getter`, `traverseOf_` can work over any `Functor`, but when passed a `Fold`, `traverseOf_` requires an `Applicative`.

    >>> traverseOf_ both putStrLn ("hello","world")
    hello
    world

    traverse_ ≡ traverseOf_ folded

    traverseOf_ _2 :: Functor f => (c -> f r) -> (d, c) -> f ()
    traverseOf_ _Left :: Applicative f => (a -> f b) -> Either a c -> f ()

    itraverseOf_ l ≡ traverseOf_ l . Indexed

The rather specific signature of `traverseOf_` allows it to be used as if the signature was any of:

    traverseOf_ :: Functor f     => Getter s a     -> (a -> f r) -> s -> f ()
    traverseOf_ :: Applicative f => Fold s a       -> (a -> f r) -> s -> f ()
    traverseOf_ :: Functor f     => Lens' s a      -> (a -> f r) -> s -> f ()
    traverseOf_ :: Functor f     => Iso' s a       -> (a -> f r) -> s -> f ()
    traverseOf_ :: Applicative f => Traversal' s a -> (a -> f r) -> s -> f ()
    traverseOf_ :: Applicative f => Prism' s a     -> (a -> f r) -> s -> f ()

forOf_ :: Functor f => Getting (Traversed r f) s a -> s -> (a -> f r) -> f () Source #

Traverse over all of the targets of a `Fold` (or `Getter`), computing an `Applicative` (or `Functor`)-based answer, but unlike `forOf` do not construct a new structure. `forOf_` generalizes `for_` to work over any `Fold`.

When passed a `Getter`, `forOf_` can work over any `Functor`, but when passed a `Fold`, `forOf_` requires an `Applicative`.

    for_ ≡ forOf_ folded

    >>> forOf_ both ("hello","world") putStrLn
    hello
    world

The rather specific signature of `forOf_` allows it to be used as if the signature was any of:

    iforOf_ l s ≡ forOf_ l s . Indexed

    forOf_ :: Functor f     => Getter s a     -> s -> (a -> f r) -> f ()
    forOf_ :: Applicative f => Fold s a       -> s -> (a -> f r) -> f ()
    forOf_ :: Functor f     => Lens' s a      -> s -> (a -> f r) -> f ()
    forOf_ :: Functor f     => Iso' s a       -> s -> (a -> f r) -> f ()
    forOf_ :: Applicative f => Traversal' s a -> s -> (a -> f r) -> f ()
    forOf_ :: Applicative f => Prism' s a     -> s -> (a -> f r) -> f ()

sequenceAOf_ :: Functor f => Getting (Traversed a f) s (f a) -> s -> f () Source #

Evaluate each action in observed by a `Fold` on a structure from left to right, ignoring the results.

    sequenceA_ ≡ sequenceAOf_ folded

    >>> sequenceAOf_ both (putStrLn "hello",putStrLn "world")
    hello
    world

    sequenceAOf_ :: Functor f     => Getter s (f a)     -> s -> f ()
    sequenceAOf_ :: Applicative f => Fold s (f a)       -> s -> f ()
    sequenceAOf_ :: Functor f     => Lens' s (f a)      -> s -> f ()
    sequenceAOf_ :: Functor f     => Iso' s (f a)       -> s -> f ()
    sequenceAOf_ :: Applicative f => Traversal' s (f a) -> s -> f ()
    sequenceAOf_ :: Applicative f => Prism' s (f a)     -> s -> f ()

traverse1Of_ :: Functor f => Getting (TraversedF r f) s a -> (a -> f r) -> s -> f () Source #

Traverse over all of the targets of a `Fold1`, computing an `Apply` based answer.

As long as you have `Applicative` or `Functor` effect you are better using `traverseOf_`. The `traverse1Of_` is useful only when you have genuine `Apply` effect.

    >>> traverse1Of_ both1 (\ks -> Map.fromList [ (k, ()) | k <- ks ]) ("abc", "bcd")
    fromList [('b',()),('c',())]

    traverse1Of_ :: Apply f => Fold1 s a -> (a -> f r) -> s -> f ()

Since: 4.16

for1Of_ :: Functor f => Getting (TraversedF r f) s a -> s -> (a -> f r) -> f () Source #

See `forOf_` and `traverse1Of_`.

    >>> for1Of_ both1 ("abc", "bcd") (\ks -> Map.fromList [ (k, ()) | k <- ks ])
    fromList [('b',()),('c',())]

    for1Of_ :: Apply f => Fold1 s a -> s -> (a -> f r) -> f ()

Since: 4.16

sequence1Of_ :: Functor f => Getting (TraversedF a f) s (f a) -> s -> f () Source #

See `sequenceAOf_` and `traverse1Of_`.

    sequence1Of_ :: Apply f => Fold1 s (f a) -> s -> f ()

Since: 4.16

mapMOf_ :: Monad m => Getting (Sequenced r m) s a -> (a -> m r) -> s -> m () Source #

Map each target of a `Fold` on a structure to a monadic action, evaluate these actions from left to right, and ignore the results.

    >>> mapMOf_ both putStrLn ("hello","world")
    hello
    world

    mapM_ ≡ mapMOf_ folded

    mapMOf_ :: Monad m => Getter s a     -> (a -> m r) -> s -> m ()
    mapMOf_ :: Monad m => Fold s a       -> (a -> m r) -> s -> m ()
    mapMOf_ :: Monad m => Lens' s a      -> (a -> m r) -> s -> m ()
    mapMOf_ :: Monad m => Iso' s a       -> (a -> m r) -> s -> m ()
    mapMOf_ :: Monad m => Traversal' s a -> (a -> m r) -> s -> m ()
    mapMOf_ :: Monad m => Prism' s a     -> (a -> m r) -> s -> m ()

forMOf_ :: Monad m => Getting (Sequenced r m) s a -> s -> (a -> m r) -> m () Source #

`forMOf_` is `mapMOf_` with two of its arguments flipped.

    >>> forMOf_ both ("hello","world") putStrLn
    hello
    world

    forM_ ≡ forMOf_ folded

    forMOf_ :: Monad m => Getter s a     -> s -> (a -> m r) -> m ()
    forMOf_ :: Monad m => Fold s a       -> s -> (a -> m r) -> m ()
    forMOf_ :: Monad m => Lens' s a      -> s -> (a -> m r) -> m ()
    forMOf_ :: Monad m => Iso' s a       -> s -> (a -> m r) -> m ()
    forMOf_ :: Monad m => Traversal' s a -> s -> (a -> m r) -> m ()
    forMOf_ :: Monad m => Prism' s a     -> s -> (a -> m r) -> m ()

sequenceOf_ :: Monad m => Getting (Sequenced a m) s (m a) -> s -> m () Source #

Evaluate each monadic action referenced by a `Fold` on the structure from left to right, and ignore the results.

    >>> sequenceOf_ both (putStrLn "hello",putStrLn "world")
    hello
    world

    sequence_ ≡ sequenceOf_ folded

    sequenceOf_ :: Monad m => Getter s (m a)     -> s -> m ()
    sequenceOf_ :: Monad m => Fold s (m a)       -> s -> m ()
    sequenceOf_ :: Monad m => Lens' s (m a)      -> s -> m ()
    sequenceOf_ :: Monad m => Iso' s (m a)       -> s -> m ()
    sequenceOf_ :: Monad m => Traversal' s (m a) -> s -> m ()
    sequenceOf_ :: Monad m => Prism' s (m a)     -> s -> m ()

asumOf :: Alternative f => Getting (Endo (f a)) s (f a) -> s -> f a Source #

The sum of a collection of actions, generalizing `concatOf`.

    >>> asumOf both ("hello","world")
    "helloworld"

    >>> asumOf each (Nothing, Just "hello", Nothing)
    Just "hello"

    asum ≡ asumOf folded

    asumOf :: Alternative f => Getter s (f a)     -> s -> f a
    asumOf :: Alternative f => Fold s (f a)       -> s -> f a
    asumOf :: Alternative f => Lens' s (f a)      -> s -> f a
    asumOf :: Alternative f => Iso' s (f a)       -> s -> f a
    asumOf :: Alternative f => Traversal' s (f a) -> s -> f a
    asumOf :: Alternative f => Prism' s (f a)     -> s -> f a

msumOf :: MonadPlus m => Getting (Endo (m a)) s (m a) -> s -> m a Source #

The sum of a collection of actions, generalizing `concatOf`.

    >>> msumOf both ("hello","world")
    "helloworld"

    >>> msumOf each (Nothing, Just "hello", Nothing)
    Just "hello"

    msum ≡ msumOf folded

    msumOf :: MonadPlus m => Getter s (m a)     -> s -> m a
    msumOf :: MonadPlus m => Fold s (m a)       -> s -> m a
    msumOf :: MonadPlus m => Lens' s (m a)      -> s -> m a
    msumOf :: MonadPlus m => Iso' s (m a)       -> s -> m a
    msumOf :: MonadPlus m => Traversal' s (m a) -> s -> m a
    msumOf :: MonadPlus m => Prism' s (m a)     -> s -> m a

elemOf :: Eq a => Getting Any s a -> a -> s -> Bool Source #

Does the element occur anywhere within a given `Fold` of the structure?

    >>> elemOf both "hello" ("hello","world")
    True

    elem ≡ elemOf folded

    elemOf :: Eq a => Getter s a     -> a -> s -> Bool
    elemOf :: Eq a => Fold s a       -> a -> s -> Bool
    elemOf :: Eq a => Lens' s a      -> a -> s -> Bool
    elemOf :: Eq a => Iso' s a       -> a -> s -> Bool
    elemOf :: Eq a => Traversal' s a -> a -> s -> Bool
    elemOf :: Eq a => Prism' s a     -> a -> s -> Bool

notElemOf :: Eq a => Getting All s a -> a -> s -> Bool Source #

Does the element not occur anywhere within a given `Fold` of the structure?

    >>> notElemOf each 'd' ('a','b','c')
    True

    >>> notElemOf each 'a' ('a','b','c')
    False

    notElem ≡ notElemOf folded

    notElemOf :: Eq a => Getter s a     -> a -> s -> Bool
    notElemOf :: Eq a => Fold s a       -> a -> s -> Bool
    notElemOf :: Eq a => Iso' s a       -> a -> s -> Bool
    notElemOf :: Eq a => Lens' s a      -> a -> s -> Bool
    notElemOf :: Eq a => Traversal' s a -> a -> s -> Bool
    notElemOf :: Eq a => Prism' s a     -> a -> s -> Bool

concatMapOf :: Getting [r] s a -> (a -> [r]) -> s -> [r] Source #

Map a function over all the targets of a `Fold` of a container and concatenate the resulting lists.

    >>> concatMapOf both (\x -> [x, x + 1]) (1,3)
    [1,2,3,4]

    concatMap ≡ concatMapOf folded

    concatMapOf :: Getter s a     -> (a -> [r]) -> s -> [r]
    concatMapOf :: Fold s a       -> (a -> [r]) -> s -> [r]
    concatMapOf :: Lens' s a      -> (a -> [r]) -> s -> [r]
    concatMapOf :: Iso' s a       -> (a -> [r]) -> s -> [r]
    concatMapOf :: Traversal' s a -> (a -> [r]) -> s -> [r]

concatOf :: Getting [r] s [r] -> s -> [r] Source #

Concatenate all of the lists targeted by a `Fold` into a longer list.

    >>> concatOf both ("pan","ama")
    "panama"

    concat ≡ concatOf folded
    concatOf ≡ view

    concatOf :: Getter s [r]     -> s -> [r]
    concatOf :: Fold s [r]       -> s -> [r]
    concatOf :: Iso' s [r]       -> s -> [r]
    concatOf :: Lens' s [r]      -> s -> [r]
    concatOf :: Traversal' s [r] -> s -> [r]

lengthOf :: Getting (Endo (Endo Int)) s a -> s -> Int Source #

Calculate the number of targets there are for a `Fold` in a given container.

Note: This can be rather inefficient for large containers and just like `length`, this will not terminate for infinite folds.

    length ≡ lengthOf folded

    >>> lengthOf _1 ("hello",())
    1

    >>> lengthOf traverse [1..10]
    10

    >>> lengthOf (traverse.traverse) [[1,2],[3,4],[5,6]]
    6

    lengthOf (folded . folded) :: (Foldable f, Foldable g) => f (g a) -> Int

    lengthOf :: Getter s a     -> s -> Int
    lengthOf :: Fold s a       -> s -> Int
    lengthOf :: Lens' s a      -> s -> Int
    lengthOf :: Iso' s a       -> s -> Int
    lengthOf :: Traversal' s a -> s -> Int

firstOf :: Getting (Leftmost a) s a -> s -> Maybe a Source #

Retrieve the `First` entry of a `Fold` or `Traversal` or retrieve `Just` the result from a `Getter` or `Lens`.

The answer is computed in a manner that leaks space less than ``preview`` or `^?'` and gives you back access to the outermost `Just` constructor more quickly, but does so in a way that builds an intermediate structure, and thus may have worse constant factors. This also means that it can not be used in any `MonadReader`, but must instead have `s` passed as its last argument, unlike `preview`.

Note: this could been named `headOf`.

    >>> firstOf traverse [1..10]
    Just 1

    >>> firstOf both (1,2)
    Just 1

    >>> firstOf ignored ()
    Nothing

    firstOf :: Getter s a     -> s -> Maybe a
    firstOf :: Fold s a       -> s -> Maybe a
    firstOf :: Lens' s a      -> s -> Maybe a
    firstOf :: Iso' s a       -> s -> Maybe a
    firstOf :: Traversal' s a -> s -> Maybe a

first1Of :: Getting (First a) s a -> s -> a Source #

Retrieve the `First` entry of a `Fold1` or `Traversal1` or the result from a `Getter` or `Lens`.

    >>> first1Of traverse1 (1 :| [2..10])
    1

    >>> first1Of both1 (1,2)
    1

Note: this is different from `^.`.

    >>> first1Of traverse1 ([1,2] :| [[3,4],[5,6]])
    [1,2]

    >>> ([1,2] :| [[3,4],[5,6]]) ^. traverse1
    [1,2,3,4,5,6]

    first1Of :: Getter s a      -> s -> a
    first1Of :: Fold1 s a       -> s -> a
    first1Of :: Lens' s a       -> s -> a
    first1Of :: Iso' s a        -> s -> a
    first1Of :: Traversal1' s a -> s -> a

lastOf :: Getting (Rightmost a) s a -> s -> Maybe a Source #

Retrieve the `Last` entry of a `Fold` or `Traversal` or retrieve `Just` the result from a `Getter` or `Lens`.

The answer is computed in a manner that leaks space less than ``ala` `Last` `.` `foldMapOf`` and gives you back access to the outermost `Just` constructor more quickly, but may have worse constant factors.

    >>> lastOf traverse [1..10]
    Just 10

    >>> lastOf both (1,2)
    Just 2

    >>> lastOf ignored ()
    Nothing

    lastOf :: Getter s a     -> s -> Maybe a
    lastOf :: Fold s a       -> s -> Maybe a
    lastOf :: Lens' s a      -> s -> Maybe a
    lastOf :: Iso' s a       -> s -> Maybe a
    lastOf :: Traversal' s a -> s -> Maybe a

last1Of :: Getting (Last a) s a -> s -> a Source #

Retrieve the `Last` entry of a `Fold1` or `Traversal1` or retrieve the result from a `Getter` or `Lens`.o

    >>> last1Of traverse1 (1 :| [2..10])
    10

    >>> last1Of both1 (1,2)
    2

    last1Of :: Getter s a      -> s -> Maybe a
    last1Of :: Fold1 s a       -> s -> Maybe a
    last1Of :: Lens' s a       -> s -> Maybe a
    last1Of :: Iso' s a        -> s -> Maybe a
    last1Of :: Traversal1' s a -> s -> Maybe a

nullOf :: Getting All s a -> s -> Bool Source #

Returns `True` if this `Fold` or `Traversal` has no targets in the given container.

Note: `nullOf` on a valid `Iso`, `Lens` or `Getter` should always return `False`.

    null ≡ nullOf folded

This may be rather inefficient compared to the `null` check of many containers.

    >>> nullOf _1 (1,2)
    False

    >>> nullOf ignored ()
    True

    >>> nullOf traverse []
    True

    >>> nullOf (element 20) [1..10]
    True

    nullOf (folded . _1 . folded) :: (Foldable f, Foldable g) => f (g a, b) -> Bool

    nullOf :: Getter s a     -> s -> Bool
    nullOf :: Fold s a       -> s -> Bool
    nullOf :: Iso' s a       -> s -> Bool
    nullOf :: Lens' s a      -> s -> Bool
    nullOf :: Traversal' s a -> s -> Bool

notNullOf :: Getting Any s a -> s -> Bool Source #

Returns `True` if this `Fold` or `Traversal` has any targets in the given container.

A more "conversational" alias for this combinator is `has`.

Note: `notNullOf` on a valid `Iso`, `Lens` or `Getter` should always return `True`.

    not . null ≡ notNullOf folded

This may be rather inefficient compared to the ``not` `.` `null`` check of many containers.

    >>> notNullOf _1 (1,2)
    True

    >>> notNullOf traverse [1..10]
    True

    >>> notNullOf folded []
    False

    >>> notNullOf (element 20) [1..10]
    False

    notNullOf (folded . _1 . folded) :: (Foldable f, Foldable g) => f (g a, b) -> Bool

    notNullOf :: Getter s a     -> s -> Bool
    notNullOf :: Fold s a       -> s -> Bool
    notNullOf :: Iso' s a       -> s -> Bool
    notNullOf :: Lens' s a      -> s -> Bool
    notNullOf :: Traversal' s a -> s -> Bool

maximumOf :: Ord a => Getting (Endo (Endo (Maybe a))) s a -> s -> Maybe a Source #

Obtain the maximum element (if any) targeted by a `Fold` or `Traversal` safely.

Note: `maximumOf` on a valid `Iso`, `Lens` or `Getter` will always return `Just` a value.

    >>> maximumOf traverse [1..10]
    Just 10

    >>> maximumOf traverse []
    Nothing

    >>> maximumOf (folded.filtered even) [1,4,3,6,7,9,2]
    Just 6

    maximum ≡ fromMaybe (error "empty") . maximumOf folded

In the interest of efficiency, This operation has semantics more strict than strictly necessary. ``rmap` `getMax` (`foldMapOf` l `Max`)` has lazier semantics but could leak memory.

    maximumOf :: Ord a => Getter s a     -> s -> Maybe a
    maximumOf :: Ord a => Fold s a       -> s -> Maybe a
    maximumOf :: Ord a => Iso' s a       -> s -> Maybe a
    maximumOf :: Ord a => Lens' s a      -> s -> Maybe a
    maximumOf :: Ord a => Traversal' s a -> s -> Maybe a

maximum1Of :: Ord a => Getting (Max a) s a -> s -> a Source #

Obtain the maximum element targeted by a `Fold1` or `Traversal1`.

    >>> maximum1Of traverse1 (1 :| [2..10])
    10

    maximum1Of :: Ord a => Getter s a      -> s -> a
    maximum1Of :: Ord a => Fold1 s a       -> s -> a
    maximum1Of :: Ord a => Iso' s a        -> s -> a
    maximum1Of :: Ord a => Lens' s a       -> s -> a
    maximum1Of :: Ord a => Traversal1' s a -> s -> a

minimumOf :: Ord a => Getting (Endo (Endo (Maybe a))) s a -> s -> Maybe a Source #

Obtain the minimum element (if any) targeted by a `Fold` or `Traversal` safely.

Note: `minimumOf` on a valid `Iso`, `Lens` or `Getter` will always return `Just` a value.

    >>> minimumOf traverse [1..10]
    Just 1

    >>> minimumOf traverse []
    Nothing

    >>> minimumOf (folded.filtered even) [1,4,3,6,7,9,2]
    Just 2

    minimum ≡ fromMaybe (error "empty") . minimumOf folded

In the interest of efficiency, This operation has semantics more strict than strictly necessary. ``rmap` `getMin` (`foldMapOf` l `Min`)` has lazier semantics but could leak memory.

    minimumOf :: Ord a => Getter s a     -> s -> Maybe a
    minimumOf :: Ord a => Fold s a       -> s -> Maybe a
    minimumOf :: Ord a => Iso' s a       -> s -> Maybe a
    minimumOf :: Ord a => Lens' s a      -> s -> Maybe a
    minimumOf :: Ord a => Traversal' s a -> s -> Maybe a

minimum1Of :: Ord a => Getting (Min a) s a -> s -> a Source #

Obtain the minimum element targeted by a `Fold1` or `Traversal1`.

    >>> minimum1Of traverse1 (1 :| [2..10])
    1

    minimum1Of :: Ord a => Getter s a      -> s -> a
    minimum1Of :: Ord a => Fold1 s a       -> s -> a
    minimum1Of :: Ord a => Iso' s a        -> s -> a
    minimum1Of :: Ord a => Lens' s a       -> s -> a
    minimum1Of :: Ord a => Traversal1' s a -> s -> a

maximumByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a Source #

Obtain the maximum element (if any) targeted by a `Fold`, `Traversal`, `Lens`, `Iso`, or `Getter` according to a user supplied `Ordering`.

    >>> maximumByOf traverse (compare `on` length) ["mustard","relish","ham"]
    Just "mustard"

In the interest of efficiency, This operation has semantics more strict than strictly necessary.

    maximumBy cmp ≡ fromMaybe (error "empty") . maximumByOf folded cmp

    maximumByOf :: Getter s a     -> (a -> a -> Ordering) -> s -> Maybe a
    maximumByOf :: Fold s a       -> (a -> a -> Ordering) -> s -> Maybe a
    maximumByOf :: Iso' s a       -> (a -> a -> Ordering) -> s -> Maybe a
    maximumByOf :: Lens' s a      -> (a -> a -> Ordering) -> s -> Maybe a
    maximumByOf :: Traversal' s a -> (a -> a -> Ordering) -> s -> Maybe a

minimumByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a Source #

Obtain the minimum element (if any) targeted by a `Fold`, `Traversal`, `Lens`, `Iso` or `Getter` according to a user supplied `Ordering`.

In the interest of efficiency, This operation has semantics more strict than strictly necessary.

    >>> minimumByOf traverse (compare `on` length) ["mustard","relish","ham"]
    Just "ham"

    minimumBy cmp ≡ fromMaybe (error "empty") . minimumByOf folded cmp

    minimumByOf :: Getter s a     -> (a -> a -> Ordering) -> s -> Maybe a
    minimumByOf :: Fold s a       -> (a -> a -> Ordering) -> s -> Maybe a
    minimumByOf :: Iso' s a       -> (a -> a -> Ordering) -> s -> Maybe a
    minimumByOf :: Lens' s a      -> (a -> a -> Ordering) -> s -> Maybe a
    minimumByOf :: Traversal' s a -> (a -> a -> Ordering) -> s -> Maybe a

findOf :: Getting (Endo (Maybe a)) s a -> (a -> Bool) -> s -> Maybe a Source #

The `findOf` function takes a `Lens` (or `Getter`, `Iso`, `Fold`, or `Traversal`), a predicate and a structure and returns the leftmost element of the structure matching the predicate, or `Nothing` if there is no such element.

    >>> findOf each even (1,3,4,6)
    Just 4

    >>> findOf folded even [1,3,5,7]
    Nothing

    findOf :: Getter s a     -> (a -> Bool) -> s -> Maybe a
    findOf :: Fold s a       -> (a -> Bool) -> s -> Maybe a
    findOf :: Iso' s a       -> (a -> Bool) -> s -> Maybe a
    findOf :: Lens' s a      -> (a -> Bool) -> s -> Maybe a
    findOf :: Traversal' s a -> (a -> Bool) -> s -> Maybe a

    find ≡ findOf folded
    ifindOf l ≡ findOf l . Indexed

A simpler version that didn't permit indexing, would be:

    findOf :: Getting (Endo (Maybe a)) s a -> (a -> Bool) -> s -> Maybe a
    findOf l p = foldrOf l (a y -> if p a then Just a else y) Nothing

findMOf :: Monad m => Getting (Endo (m (Maybe a))) s a -> (a -> m Bool) -> s -> m (Maybe a) Source #

The `findMOf` function takes a `Lens` (or `Getter`, `Iso`, `Fold`, or `Traversal`), a monadic predicate and a structure and returns in the monad the leftmost element of the structure matching the predicate, or `Nothing` if there is no such element.

    >>> findMOf each ( \x -> print ("Checking " ++ show x) >> return (even x)) (1,3,4,6)
    "Checking 1"
    "Checking 3"
    "Checking 4"
    Just 4

    >>> findMOf each ( \x -> print ("Checking " ++ show x) >> return (even x)) (1,3,5,7)
    "Checking 1"
    "Checking 3"
    "Checking 5"
    "Checking 7"
    Nothing

    findMOf :: (Monad m, Getter s a)     -> (a -> m Bool) -> s -> m (Maybe a)
    findMOf :: (Monad m, Fold s a)       -> (a -> m Bool) -> s -> m (Maybe a)
    findMOf :: (Monad m, Iso' s a)       -> (a -> m Bool) -> s -> m (Maybe a)
    findMOf :: (Monad m, Lens' s a)      -> (a -> m Bool) -> s -> m (Maybe a)
    findMOf :: (Monad m, Traversal' s a) -> (a -> m Bool) -> s -> m (Maybe a)

    findMOf folded :: (Monad m, Foldable f) => (a -> m Bool) -> f a -> m (Maybe a)
    ifindMOf l ≡ findMOf l . Indexed

A simpler version that didn't permit indexing, would be:

    findMOf :: Monad m => Getting (Endo (m (Maybe a))) s a -> (a -> m Bool) -> s -> m (Maybe a)
    findMOf l p = foldrOf l (a y -> p a >>= x -> if x then return (Just a) else y) $ return Nothing

lookupOf :: Eq k => Getting (Endo (Maybe v)) s (k, v) -> k -> s -> Maybe v Source #

The `lookupOf` function takes a `Fold` (or `Getter`, `Traversal`, `Lens`, `Iso`, etc.), a key, and a structure containing key/value pairs. It returns the first value corresponding to the given key. This function generalizes `lookup` to work on an arbitrary `Fold` instead of lists.

    >>> lookupOf folded 4 [(2, 'a'), (4, 'b'), (4, 'c')]
    Just 'b'

    >>> lookupOf each 2 [(2, 'a'), (4, 'b'), (4, 'c')]
    Just 'a'

    lookupOf :: Eq k => Fold s (k,v) -> k -> s -> Maybe v

foldr1Of :: HasCallStack => Getting (Endo (Maybe a)) s a -> (a -> a -> a) -> s -> a Source #

A variant of `foldrOf` that has no base case and thus may only be applied to lenses and structures such that the `Lens` views at least one element of the structure.

    >>> foldr1Of each (+) (1,2,3,4)
    10

    foldr1Of l f ≡ foldr1 f . toListOf l
    foldr1 ≡ foldr1Of folded

    foldr1Of :: Getter s a     -> (a -> a -> a) -> s -> a
    foldr1Of :: Fold s a       -> (a -> a -> a) -> s -> a
    foldr1Of :: Iso' s a       -> (a -> a -> a) -> s -> a
    foldr1Of :: Lens' s a      -> (a -> a -> a) -> s -> a
    foldr1Of :: Traversal' s a -> (a -> a -> a) -> s -> a

foldl1Of :: HasCallStack => Getting (Dual (Endo (Maybe a))) s a -> (a -> a -> a) -> s -> a Source #

A variant of `foldlOf` that has no base case and thus may only be applied to lenses and structures such that the `Lens` views at least one element of the structure.

    >>> foldl1Of each (+) (1,2,3,4)
    10

    foldl1Of l f ≡ foldl1 f . toListOf l
    foldl1 ≡ foldl1Of folded

    foldl1Of :: Getter s a     -> (a -> a -> a) -> s -> a
    foldl1Of :: Fold s a       -> (a -> a -> a) -> s -> a
    foldl1Of :: Iso' s a       -> (a -> a -> a) -> s -> a
    foldl1Of :: Lens' s a      -> (a -> a -> a) -> s -> a
    foldl1Of :: Traversal' s a -> (a -> a -> a) -> s -> a

foldrOf' :: Getting (Dual (Endo (Endo r))) s a -> (a -> r -> r) -> r -> s -> r Source #

Strictly fold right over the elements of a structure.

    foldr' ≡ foldrOf' folded

    foldrOf' :: Getter s a     -> (a -> r -> r) -> r -> s -> r
    foldrOf' :: Fold s a       -> (a -> r -> r) -> r -> s -> r
    foldrOf' :: Iso' s a       -> (a -> r -> r) -> r -> s -> r
    foldrOf' :: Lens' s a      -> (a -> r -> r) -> r -> s -> r
    foldrOf' :: Traversal' s a -> (a -> r -> r) -> r -> s -> r

foldlOf' :: Getting (Endo (Endo r)) s a -> (r -> a -> r) -> r -> s -> r Source #

Fold over the elements of a structure, associating to the left, but strictly.

    foldl' ≡ foldlOf' folded

    foldlOf' :: Getter s a     -> (r -> a -> r) -> r -> s -> r
    foldlOf' :: Fold s a       -> (r -> a -> r) -> r -> s -> r
    foldlOf' :: Iso' s a       -> (r -> a -> r) -> r -> s -> r
    foldlOf' :: Lens' s a      -> (r -> a -> r) -> r -> s -> r
    foldlOf' :: Traversal' s a -> (r -> a -> r) -> r -> s -> r

foldr1Of' :: HasCallStack => Getting (Dual (Endo (Endo (Maybe a)))) s a -> (a -> a -> a) -> s -> a Source #

A variant of `foldrOf'` that has no base case and thus may only be applied to folds and structures such that the fold views at least one element of the structure.

    foldr1Of l f ≡ foldr1 f . toListOf l

    foldr1Of' :: Getter s a     -> (a -> a -> a) -> s -> a
    foldr1Of' :: Fold s a       -> (a -> a -> a) -> s -> a
    foldr1Of' :: Iso' s a       -> (a -> a -> a) -> s -> a
    foldr1Of' :: Lens' s a      -> (a -> a -> a) -> s -> a
    foldr1Of' :: Traversal' s a -> (a -> a -> a) -> s -> a

foldl1Of' :: HasCallStack => Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> a) -> s -> a Source #

A variant of `foldlOf'` that has no base case and thus may only be applied to folds and structures such that the fold views at least one element of the structure.

    foldl1Of' l f ≡ foldl1' f . toListOf l

    foldl1Of' :: Getter s a     -> (a -> a -> a) -> s -> a
    foldl1Of' :: Fold s a       -> (a -> a -> a) -> s -> a
    foldl1Of' :: Iso' s a       -> (a -> a -> a) -> s -> a
    foldl1Of' :: Lens' s a      -> (a -> a -> a) -> s -> a
    foldl1Of' :: Traversal' s a -> (a -> a -> a) -> s -> a

foldrMOf :: Monad m => Getting (Dual (Endo (r -> m r))) s a -> (a -> r -> m r) -> r -> s -> m r Source #

Monadic fold over the elements of a structure, associating to the right, i.e. from right to left.

    foldrM ≡ foldrMOf folded

    foldrMOf :: Monad m => Getter s a     -> (a -> r -> m r) -> r -> s -> m r
    foldrMOf :: Monad m => Fold s a       -> (a -> r -> m r) -> r -> s -> m r
    foldrMOf :: Monad m => Iso' s a       -> (a -> r -> m r) -> r -> s -> m r
    foldrMOf :: Monad m => Lens' s a      -> (a -> r -> m r) -> r -> s -> m r
    foldrMOf :: Monad m => Traversal' s a -> (a -> r -> m r) -> r -> s -> m r

foldlMOf :: Monad m => Getting (Endo (r -> m r)) s a -> (r -> a -> m r) -> r -> s -> m r Source #

Monadic fold over the elements of a structure, associating to the left, i.e. from left to right.

    foldlM ≡ foldlMOf folded

    foldlMOf :: Monad m => Getter s a     -> (r -> a -> m r) -> r -> s -> m r
    foldlMOf :: Monad m => Fold s a       -> (r -> a -> m r) -> r -> s -> m r
    foldlMOf :: Monad m => Iso' s a       -> (r -> a -> m r) -> r -> s -> m r
    foldlMOf :: Monad m => Lens' s a      -> (r -> a -> m r) -> r -> s -> m r
    foldlMOf :: Monad m => Traversal' s a -> (r -> a -> m r) -> r -> s -> m r

has :: Getting Any s a -> s -> Bool Source #

Check to see if this `Fold` or `Traversal` matches 1 or more entries.

    >>> has (element 0) []
    False

    >>> has _Left (Left 12)
    True

    >>> has _Right (Left 12)
    False

This will always return `True` for a `Lens` or `Getter`.

    >>> has _1 ("hello","world")
    True

    has :: Getter s a     -> s -> Bool
    has :: Fold s a       -> s -> Bool
    has :: Iso' s a       -> s -> Bool
    has :: Lens' s a      -> s -> Bool
    has :: Traversal' s a -> s -> Bool

hasn't :: Getting All s a -> s -> Bool Source #

Check to see if this `Fold` or `Traversal` has no matches.

    >>> hasn't _Left (Right 12)
    True

    >>> hasn't _Left (Left 12)
    False

pre :: Getting (First a) s a -> IndexPreservingGetter s (Maybe a) Source #

This converts a `Fold` to a `IndexPreservingGetter` that returns the first element, if it exists, as a `Maybe`.

    pre :: Getter s a     -> IndexPreservingGetter s (Maybe a)
    pre :: Fold s a       -> IndexPreservingGetter s (Maybe a)
    pre :: Traversal' s a -> IndexPreservingGetter s (Maybe a)
    pre :: Lens' s a      -> IndexPreservingGetter s (Maybe a)
    pre :: Iso' s a       -> IndexPreservingGetter s (Maybe a)
    pre :: Prism' s a     -> IndexPreservingGetter s (Maybe a)

ipre :: IndexedGetting i (First (i, a)) s a -> IndexPreservingGetter s (Maybe (i, a)) Source #

This converts an `IndexedFold` to an `IndexPreservingGetter` that returns the first index and element, if they exist, as a `Maybe`.

    ipre :: IndexedGetter i s a     -> IndexPreservingGetter s (Maybe (i, a))
    ipre :: IndexedFold i s a       -> IndexPreservingGetter s (Maybe (i, a))
    ipre :: IndexedTraversal' i s a -> IndexPreservingGetter s (Maybe (i, a))
    ipre :: IndexedLens' i s a      -> IndexPreservingGetter s (Maybe (i, a))

preview :: MonadReader s m => Getting (First a) s a -> m (Maybe a) Source #

Retrieve the first value targeted by a `Fold` or `Traversal` (or `Just` the result from a `Getter` or `Lens`). See also `firstOf` and `^?`, which are similar with some subtle differences (explained below).

    listToMaybe . toList ≡ preview folded

    preview = view . pre

Unlike `^?`, this function uses a `MonadReader` to read the value to be focused in on. This allows one to pass the value as the last argument by using the `MonadReader` instance for `(->) s` However, it may also be used as part of some deeply nested transformer stack.

`preview` uses a monoidal value to obtain the result. This means that it generally has good performance, but can occasionally cause space leaks or even stack overflows on some data types. There is another function, `firstOf`, which avoids these issues at the cost of a slight constant performance cost and a little less flexibility.

It may be helpful to think of `preview` as having one of the following more specialized types:

    preview :: Getter s a     -> s -> Maybe a
    preview :: Fold s a       -> s -> Maybe a
    preview :: Lens' s a      -> s -> Maybe a
    preview :: Iso' s a       -> s -> Maybe a
    preview :: Traversal' s a -> s -> Maybe a

    preview :: MonadReader s m => Getter s a     -> m (Maybe a)
    preview :: MonadReader s m => Fold s a       -> m (Maybe a)
    preview :: MonadReader s m => Lens' s a      -> m (Maybe a)
    preview :: MonadReader s m => Iso' s a       -> m (Maybe a)
    preview :: MonadReader s m => Traversal' s a -> m (Maybe a)

ipreview :: MonadReader s m => IndexedGetting i (First (i, a)) s a -> m (Maybe (i, a)) Source #

Retrieve the first index and value targeted by a `Fold` or `Traversal` (or `Just` the result from a `Getter` or `Lens`). See also (`^@?`).

    ipreview = view . ipre

This is usually applied in the `Reader` `Monad` `(->) s`.

    ipreview :: IndexedGetter i s a     -> s -> Maybe (i, a)
    ipreview :: IndexedFold i s a       -> s -> Maybe (i, a)
    ipreview :: IndexedLens' i s a      -> s -> Maybe (i, a)
    ipreview :: IndexedTraversal' i s a -> s -> Maybe (i, a)

However, it may be useful to think of its full generality when working with a `Monad` transformer stack:

    ipreview :: MonadReader s m => IndexedGetter s a     -> m (Maybe (i, a))
    ipreview :: MonadReader s m => IndexedFold s a       -> m (Maybe (i, a))
    ipreview :: MonadReader s m => IndexedLens' s a      -> m (Maybe (i, a))
    ipreview :: MonadReader s m => IndexedTraversal' s a -> m (Maybe (i, a))

previews :: MonadReader s m => Getting (First r) s a -> (a -> r) -> m (Maybe r) Source #

Retrieve a function of the first value targeted by a `Fold` or `Traversal` (or `Just` the result from a `Getter` or `Lens`).

This is usually applied in the `Reader` `Monad` `(->) s`.

ipreviews :: MonadReader s m => IndexedGetting i (First r) s a -> (i -> a -> r) -> m (Maybe r) Source #

Retrieve a function of the first index and value targeted by an `IndexedFold` or `IndexedTraversal` (or `Just` the result from an `IndexedGetter` or `IndexedLens`). See also (`^@?`).

    ipreviews = views . ipre

This is usually applied in the `Reader` `Monad` `(->) s`.

    ipreviews :: IndexedGetter i s a     -> (i -> a -> r) -> s -> Maybe r
    ipreviews :: IndexedFold i s a       -> (i -> a -> r) -> s -> Maybe r
    ipreviews :: IndexedLens' i s a      -> (i -> a -> r) -> s -> Maybe r
    ipreviews :: IndexedTraversal' i s a -> (i -> a -> r) -> s -> Maybe r

However, it may be useful to think of its full generality when working with a `Monad` transformer stack:

    ipreviews :: MonadReader s m => IndexedGetter i s a     -> (i -> a -> r) -> m (Maybe r)
    ipreviews :: MonadReader s m => IndexedFold i s a       -> (i -> a -> r) -> m (Maybe r)
    ipreviews :: MonadReader s m => IndexedLens' i s a      -> (i -> a -> r) -> m (Maybe r)
    ipreviews :: MonadReader s m => IndexedTraversal' i s a -> (i -> a -> r) -> m (Maybe r)

preuse :: MonadState s m => Getting (First a) s a -> m (Maybe a) Source #

Retrieve the first value targeted by a `Fold` or `Traversal` (or `Just` the result from a `Getter` or `Lens`) into the current state.

    preuse = use . pre

    preuse :: MonadState s m => Getter s a     -> m (Maybe a)
    preuse :: MonadState s m => Fold s a       -> m (Maybe a)
    preuse :: MonadState s m => Lens' s a      -> m (Maybe a)
    preuse :: MonadState s m => Iso' s a       -> m (Maybe a)
    preuse :: MonadState s m => Traversal' s a -> m (Maybe a)

ipreuse :: MonadState s m => IndexedGetting i (First (i, a)) s a -> m (Maybe (i, a)) Source #

Retrieve the first index and value targeted by an `IndexedFold` or `IndexedTraversal` (or `Just` the index and result from an `IndexedGetter` or `IndexedLens`) into the current state.

    ipreuse = use . ipre

    ipreuse :: MonadState s m => IndexedGetter i s a     -> m (Maybe (i, a))
    ipreuse :: MonadState s m => IndexedFold i s a       -> m (Maybe (i, a))
    ipreuse :: MonadState s m => IndexedLens' i s a      -> m (Maybe (i, a))
    ipreuse :: MonadState s m => IndexedTraversal' i s a -> m (Maybe (i, a))

preuses :: MonadState s m => Getting (First r) s a -> (a -> r) -> m (Maybe r) Source #

Retrieve a function of the first value targeted by a `Fold` or `Traversal` (or `Just` the result from a `Getter` or `Lens`) into the current state.

    preuses = uses . pre

    preuses :: MonadState s m => Getter s a     -> (a -> r) -> m (Maybe r)
    preuses :: MonadState s m => Fold s a       -> (a -> r) -> m (Maybe r)
    preuses :: MonadState s m => Lens' s a      -> (a -> r) -> m (Maybe r)
    preuses :: MonadState s m => Iso' s a       -> (a -> r) -> m (Maybe r)
    preuses :: MonadState s m => Traversal' s a -> (a -> r) -> m (Maybe r)

ipreuses :: MonadState s m => IndexedGetting i (First r) s a -> (i -> a -> r) -> m (Maybe r) Source #

Retrieve a function of the first index and value targeted by an `IndexedFold` or `IndexedTraversal` (or a function of `Just` the index and result from an `IndexedGetter` or `IndexedLens`) into the current state.

    ipreuses = uses . ipre

    ipreuses :: MonadState s m => IndexedGetter i s a     -> (i -> a -> r) -> m (Maybe r)
    ipreuses :: MonadState s m => IndexedFold i s a       -> (i -> a -> r) -> m (Maybe r)
    ipreuses :: MonadState s m => IndexedLens' i s a      -> (i -> a -> r) -> m (Maybe r)
    ipreuses :: MonadState s m => IndexedTraversal' i s a -> (i -> a -> r) -> m (Maybe r)

backwards :: (Profunctor p, Profunctor q) => Optical p q (Backwards f) s t a b -> Optical p q f s t a b Source #

This allows you to `traverse` the elements of a pretty much any `LensLike` construction in the opposite order.

This will preserve indexes on `Indexed` types and will give you the elements of a (finite) `Fold` or `Traversal` in the opposite order.

This has no practical impact on a `Getter`, `Setter`, `Lens` or `Iso`.

NB: To write back through an `Iso`, you want to use `from`. Similarly, to write back through an `Prism`, you want to use `re`.

ifoldMapOf :: IndexedGetting i m s a -> (i -> a -> m) -> s -> m Source #

Fold an `IndexedFold` or `IndexedTraversal` by mapping indices and values to an arbitrary `Monoid` with access to the `i`.

When you don't need access to the index then `foldMapOf` is more flexible in what it accepts.

    foldMapOf l ≡ ifoldMapOf l . const

    ifoldMapOf ::             IndexedGetter i s a     -> (i -> a -> m) -> s -> m
    ifoldMapOf :: Monoid m => IndexedFold i s a       -> (i -> a -> m) -> s -> m
    ifoldMapOf ::             IndexedLens' i s a      -> (i -> a -> m) -> s -> m
    ifoldMapOf :: Monoid m => IndexedTraversal' i s a -> (i -> a -> m) -> s -> m

ifoldrOf :: IndexedGetting i (Endo r) s a -> (i -> a -> r -> r) -> r -> s -> r Source #

Right-associative fold of parts of a structure that are viewed through an `IndexedFold` or `IndexedTraversal` with access to the `i`.

When you don't need access to the index then `foldrOf` is more flexible in what it accepts.

    foldrOf l ≡ ifoldrOf l . const

    ifoldrOf :: IndexedGetter i s a     -> (i -> a -> r -> r) -> r -> s -> r
    ifoldrOf :: IndexedFold i s a       -> (i -> a -> r -> r) -> r -> s -> r
    ifoldrOf :: IndexedLens' i s a      -> (i -> a -> r -> r) -> r -> s -> r
    ifoldrOf :: IndexedTraversal' i s a -> (i -> a -> r -> r) -> r -> s -> r

ifoldlOf :: IndexedGetting i (Dual (Endo r)) s a -> (i -> r -> a -> r) -> r -> s -> r Source #

Left-associative fold of the parts of a structure that are viewed through an `IndexedFold` or `IndexedTraversal` with access to the `i`.

When you don't need access to the index then `foldlOf` is more flexible in what it accepts.

    foldlOf l ≡ ifoldlOf l . const

    ifoldlOf :: IndexedGetter i s a     -> (i -> r -> a -> r) -> r -> s -> r
    ifoldlOf :: IndexedFold i s a       -> (i -> r -> a -> r) -> r -> s -> r
    ifoldlOf :: IndexedLens' i s a      -> (i -> r -> a -> r) -> r -> s -> r
    ifoldlOf :: IndexedTraversal' i s a -> (i -> r -> a -> r) -> r -> s -> r

ianyOf :: IndexedGetting i Any s a -> (i -> a -> Bool) -> s -> Bool Source #

Return whether or not any element viewed through an `IndexedFold` or `IndexedTraversal` satisfy a predicate, with access to the `i`.

When you don't need access to the index then `anyOf` is more flexible in what it accepts.

    anyOf l ≡ ianyOf l . const

    ianyOf :: IndexedGetter i s a     -> (i -> a -> Bool) -> s -> Bool
    ianyOf :: IndexedFold i s a       -> (i -> a -> Bool) -> s -> Bool
    ianyOf :: IndexedLens' i s a      -> (i -> a -> Bool) -> s -> Bool
    ianyOf :: IndexedTraversal' i s a -> (i -> a -> Bool) -> s -> Bool

iallOf :: IndexedGetting i All s a -> (i -> a -> Bool) -> s -> Bool Source #

Return whether or not all elements viewed through an `IndexedFold` or `IndexedTraversal` satisfy a predicate, with access to the `i`.

When you don't need access to the index then `allOf` is more flexible in what it accepts.

    allOf l ≡ iallOf l . const

    iallOf :: IndexedGetter i s a     -> (i -> a -> Bool) -> s -> Bool
    iallOf :: IndexedFold i s a       -> (i -> a -> Bool) -> s -> Bool
    iallOf :: IndexedLens' i s a      -> (i -> a -> Bool) -> s -> Bool
    iallOf :: IndexedTraversal' i s a -> (i -> a -> Bool) -> s -> Bool

inoneOf :: IndexedGetting i Any s a -> (i -> a -> Bool) -> s -> Bool Source #

Return whether or not none of the elements viewed through an `IndexedFold` or `IndexedTraversal` satisfy a predicate, with access to the `i`.

When you don't need access to the index then `noneOf` is more flexible in what it accepts.

    noneOf l ≡ inoneOf l . const

    inoneOf :: IndexedGetter i s a     -> (i -> a -> Bool) -> s -> Bool
    inoneOf :: IndexedFold i s a       -> (i -> a -> Bool) -> s -> Bool
    inoneOf :: IndexedLens' i s a      -> (i -> a -> Bool) -> s -> Bool
    inoneOf :: IndexedTraversal' i s a -> (i -> a -> Bool) -> s -> Bool

itraverseOf_ :: Functor f => IndexedGetting i (Traversed r f) s a -> (i -> a -> f r) -> s -> f () Source #

Traverse the targets of an `IndexedFold` or `IndexedTraversal` with access to the `i`, discarding the results.

When you don't need access to the index then `traverseOf_` is more flexible in what it accepts.

    traverseOf_ l ≡ itraverseOf l . const

    itraverseOf_ :: Functor f     => IndexedGetter i s a     -> (i -> a -> f r) -> s -> f ()
    itraverseOf_ :: Applicative f => IndexedFold i s a       -> (i -> a -> f r) -> s -> f ()
    itraverseOf_ :: Functor f     => IndexedLens' i s a      -> (i -> a -> f r) -> s -> f ()
    itraverseOf_ :: Applicative f => IndexedTraversal' i s a -> (i -> a -> f r) -> s -> f ()

iforOf_ :: Functor f => IndexedGetting i (Traversed r f) s a -> s -> (i -> a -> f r) -> f () Source #

Traverse the targets of an `IndexedFold` or `IndexedTraversal` with access to the index, discarding the results (with the arguments flipped).

    iforOf_ ≡ flip . itraverseOf_

When you don't need access to the index then `forOf_` is more flexible in what it accepts.

    forOf_ l a ≡ iforOf_ l a . const

    iforOf_ :: Functor f     => IndexedGetter i s a     -> s -> (i -> a -> f r) -> f ()
    iforOf_ :: Applicative f => IndexedFold i s a       -> s -> (i -> a -> f r) -> f ()
    iforOf_ :: Functor f     => IndexedLens' i s a      -> s -> (i -> a -> f r) -> f ()
    iforOf_ :: Applicative f => IndexedTraversal' i s a -> s -> (i -> a -> f r) -> f ()

imapMOf_ :: Monad m => IndexedGetting i (Sequenced r m) s a -> (i -> a -> m r) -> s -> m () Source #

Run monadic actions for each target of an `IndexedFold` or `IndexedTraversal` with access to the index, discarding the results.

When you don't need access to the index then `mapMOf_` is more flexible in what it accepts.

    mapMOf_ l ≡ imapMOf l . const

    imapMOf_ :: Monad m => IndexedGetter i s a     -> (i -> a -> m r) -> s -> m ()
    imapMOf_ :: Monad m => IndexedFold i s a       -> (i -> a -> m r) -> s -> m ()
    imapMOf_ :: Monad m => IndexedLens' i s a      -> (i -> a -> m r) -> s -> m ()
    imapMOf_ :: Monad m => IndexedTraversal' i s a -> (i -> a -> m r) -> s -> m ()

iforMOf_ :: Monad m => IndexedGetting i (Sequenced r m) s a -> s -> (i -> a -> m r) -> m () Source #

Run monadic actions for each target of an `IndexedFold` or `IndexedTraversal` with access to the index, discarding the results (with the arguments flipped).

    iforMOf_ ≡ flip . imapMOf_

When you don't need access to the index then `forMOf_` is more flexible in what it accepts.

    forMOf_ l a ≡ iforMOf l a . const

    iforMOf_ :: Monad m => IndexedGetter i s a     -> s -> (i -> a -> m r) -> m ()
    iforMOf_ :: Monad m => IndexedFold i s a       -> s -> (i -> a -> m r) -> m ()
    iforMOf_ :: Monad m => IndexedLens' i s a      -> s -> (i -> a -> m r) -> m ()
    iforMOf_ :: Monad m => IndexedTraversal' i s a -> s -> (i -> a -> m r) -> m ()

iconcatMapOf :: IndexedGetting i [r] s a -> (i -> a -> [r]) -> s -> [r] Source #

Concatenate the results of a function of the elements of an `IndexedFold` or `IndexedTraversal` with access to the index.

When you don't need access to the index then `concatMapOf` is more flexible in what it accepts.

    concatMapOf l ≡ iconcatMapOf l . const
    iconcatMapOf ≡ ifoldMapOf

    iconcatMapOf :: IndexedGetter i s a     -> (i -> a -> [r]) -> s -> [r]
    iconcatMapOf :: IndexedFold i s a       -> (i -> a -> [r]) -> s -> [r]
    iconcatMapOf :: IndexedLens' i s a      -> (i -> a -> [r]) -> s -> [r]
    iconcatMapOf :: IndexedTraversal' i s a -> (i -> a -> [r]) -> s -> [r]

ifindOf :: IndexedGetting i (Endo (Maybe a)) s a -> (i -> a -> Bool) -> s -> Maybe a Source #

The `ifindOf` function takes an `IndexedFold` or `IndexedTraversal`, a predicate that is also supplied the index, a structure and returns the left-most element of the structure matching the predicate, or `Nothing` if there is no such element.

When you don't need access to the index then `findOf` is more flexible in what it accepts.

    findOf l ≡ ifindOf l . const

    ifindOf :: IndexedGetter i s a     -> (i -> a -> Bool) -> s -> Maybe a
    ifindOf :: IndexedFold i s a       -> (i -> a -> Bool) -> s -> Maybe a
    ifindOf :: IndexedLens' i s a      -> (i -> a -> Bool) -> s -> Maybe a
    ifindOf :: IndexedTraversal' i s a -> (i -> a -> Bool) -> s -> Maybe a

ifindMOf :: Monad m => IndexedGetting i (Endo (m (Maybe a))) s a -> (i -> a -> m Bool) -> s -> m (Maybe a) Source #

The `ifindMOf` function takes an `IndexedFold` or `IndexedTraversal`, a monadic predicate that is also supplied the index, a structure and returns in the monad the left-most element of the structure matching the predicate, or `Nothing` if there is no such element.

When you don't need access to the index then `findMOf` is more flexible in what it accepts.

    findMOf l ≡ ifindMOf l . const

    ifindMOf :: Monad m => IndexedGetter i s a     -> (i -> a -> m Bool) -> s -> m (Maybe a)
    ifindMOf :: Monad m => IndexedFold i s a       -> (i -> a -> m Bool) -> s -> m (Maybe a)
    ifindMOf :: Monad m => IndexedLens' i s a      -> (i -> a -> m Bool) -> s -> m (Maybe a)
    ifindMOf :: Monad m => IndexedTraversal' i s a -> (i -> a -> m Bool) -> s -> m (Maybe a)

ifoldrOf' :: IndexedGetting i (Dual (Endo (r -> r))) s a -> (i -> a -> r -> r) -> r -> s -> r Source #

Strictly fold right over the elements of a structure with an index.

When you don't need access to the index then `foldrOf'` is more flexible in what it accepts.

    foldrOf' l ≡ ifoldrOf' l . const

    ifoldrOf' :: IndexedGetter i s a     -> (i -> a -> r -> r) -> r -> s -> r
    ifoldrOf' :: IndexedFold i s a       -> (i -> a -> r -> r) -> r -> s -> r
    ifoldrOf' :: IndexedLens' i s a      -> (i -> a -> r -> r) -> r -> s -> r
    ifoldrOf' :: IndexedTraversal' i s a -> (i -> a -> r -> r) -> r -> s -> r

ifoldlOf' :: IndexedGetting i (Endo (r -> r)) s a -> (i -> r -> a -> r) -> r -> s -> r Source #

Fold over the elements of a structure with an index, associating to the left, but strictly.

When you don't need access to the index then `foldlOf'` is more flexible in what it accepts.

    foldlOf' l ≡ ifoldlOf' l . const

    ifoldlOf' :: IndexedGetter i s a       -> (i -> r -> a -> r) -> r -> s -> r
    ifoldlOf' :: IndexedFold i s a         -> (i -> r -> a -> r) -> r -> s -> r
    ifoldlOf' :: IndexedLens' i s a        -> (i -> r -> a -> r) -> r -> s -> r
    ifoldlOf' :: IndexedTraversal' i s a   -> (i -> r -> a -> r) -> r -> s -> r

ifoldrMOf :: Monad m => IndexedGetting i (Dual (Endo (r -> m r))) s a -> (i -> a -> r -> m r) -> r -> s -> m r Source #

Monadic fold right over the elements of a structure with an index.

When you don't need access to the index then `foldrMOf` is more flexible in what it accepts.

    foldrMOf l ≡ ifoldrMOf l . const

    ifoldrMOf :: Monad m => IndexedGetter i s a     -> (i -> a -> r -> m r) -> r -> s -> m r
    ifoldrMOf :: Monad m => IndexedFold i s a       -> (i -> a -> r -> m r) -> r -> s -> m r
    ifoldrMOf :: Monad m => IndexedLens' i s a      -> (i -> a -> r -> m r) -> r -> s -> m r
    ifoldrMOf :: Monad m => IndexedTraversal' i s a -> (i -> a -> r -> m r) -> r -> s -> m r

ifoldlMOf :: Monad m => IndexedGetting i (Endo (r -> m r)) s a -> (i -> r -> a -> m r) -> r -> s -> m r Source #

Monadic fold over the elements of a structure with an index, associating to the left.

When you don't need access to the index then `foldlMOf` is more flexible in what it accepts.

    foldlMOf l ≡ ifoldlMOf l . const

    ifoldlMOf :: Monad m => IndexedGetter i s a     -> (i -> r -> a -> m r) -> r -> s -> m r
    ifoldlMOf :: Monad m => IndexedFold i s a       -> (i -> r -> a -> m r) -> r -> s -> m r
    ifoldlMOf :: Monad m => IndexedLens' i s a      -> (i -> r -> a -> m r) -> r -> s -> m r
    ifoldlMOf :: Monad m => IndexedTraversal' i s a -> (i -> r -> a -> m r) -> r -> s -> m r

itoListOf :: IndexedGetting i (Endo [(i, a)]) s a -> s -> [(i, a)] Source #

Extract the key-value pairs from a structure.

When you don't need access to the indices in the result, then `toListOf` is more flexible in what it accepts.

    toListOf l ≡ map snd . itoListOf l

    itoListOf :: IndexedGetter i s a     -> s -> [(i,a)]
    itoListOf :: IndexedFold i s a       -> s -> [(i,a)]
    itoListOf :: IndexedLens' i s a      -> s -> [(i,a)]
    itoListOf :: IndexedTraversal' i s a -> s -> [(i,a)]

elemIndexOf :: Eq a => IndexedGetting i (First i) s a -> a -> s -> Maybe i Source #

Retrieve the index of the first value targeted by a `IndexedFold` or `IndexedTraversal` which is equal to a given value.

    elemIndex ≡ elemIndexOf folded

    elemIndexOf :: Eq a => IndexedFold i s a       -> a -> s -> Maybe i
    elemIndexOf :: Eq a => IndexedTraversal' i s a -> a -> s -> Maybe i

elemIndicesOf :: Eq a => IndexedGetting i (Endo [i]) s a -> a -> s -> [i] Source #

Retrieve the indices of the values targeted by a `IndexedFold` or `IndexedTraversal` which are equal to a given value.

    elemIndices ≡ elemIndicesOf folded

    elemIndicesOf :: Eq a => IndexedFold i s a       -> a -> s -> [i]
    elemIndicesOf :: Eq a => IndexedTraversal' i s a -> a -> s -> [i]

findIndexOf :: IndexedGetting i (First i) s a -> (a -> Bool) -> s -> Maybe i Source #

Retrieve the index of the first value targeted by a `IndexedFold` or `IndexedTraversal` which satisfies a predicate.

    findIndex ≡ findIndexOf folded

    findIndexOf :: IndexedFold i s a       -> (a -> Bool) -> s -> Maybe i
    findIndexOf :: IndexedTraversal' i s a -> (a -> Bool) -> s -> Maybe i

findIndicesOf :: IndexedGetting i (Endo [i]) s a -> (a -> Bool) -> s -> [i] Source #

Retrieve the indices of the values targeted by a `IndexedFold` or `IndexedTraversal` which satisfy a predicate.

    findIndices ≡ findIndicesOf folded

    findIndicesOf :: IndexedFold i s a       -> (a -> Bool) -> s -> [i]
    findIndicesOf :: IndexedTraversal' i s a -> (a -> Bool) -> s -> [i]

ifiltered :: (Indexable i p, Applicative f) => (i -> a -> Bool) -> Optical' p (Indexed i) f a a Source #

Filter an `IndexedFold` or `IndexedGetter`, obtaining an `IndexedFold`.

    >>> [0,0,0,5,5,5]^..traversed.ifiltered (\i a -> i <= a)
    [0,5,5,5]

Compose with `ifiltered` to filter another `IndexedLens`, `IndexedIso`, `IndexedGetter`, `IndexedFold` (or `IndexedTraversal`) with access to both the value and the index.

Note: As with `filtered`, this is not a legal `IndexedTraversal`, unless you are very careful not to invalidate the predicate on the target!

itakingWhile :: (Indexable i p, Profunctor q, Contravariant f, Applicative f) => (i -> a -> Bool) -> Optical' (Indexed i) q (Const (Endo (f s))) s a -> Optical' p q f s a Source #

Obtain an `IndexedFold` by taking elements from another `IndexedFold`, `IndexedLens`, `IndexedGetter` or `IndexedTraversal` while a predicate holds.

    itakingWhile :: (i -> a -> Bool) -> IndexedFold i s a          -> IndexedFold i s a
    itakingWhile :: (i -> a -> Bool) -> IndexedTraversal' i s a    -> IndexedFold i s a
    itakingWhile :: (i -> a -> Bool) -> IndexedLens' i s a         -> IndexedFold i s a
    itakingWhile :: (i -> a -> Bool) -> IndexedGetter i s a        -> IndexedFold i s a

Note: Applying `itakingWhile` to an `IndexedLens` or `IndexedTraversal` will still allow you to use it as a pseudo-`IndexedTraversal`, but if you change the value of any target to one where the predicate returns `False`, then you will break the `Traversal` laws and `Traversal` fusion will no longer be sound.

idroppingWhile :: (Indexable i p, Profunctor q, Applicative f) => (i -> a -> Bool) -> Optical (Indexed i) q (Compose (State Bool) f) s t a a -> Optical p q f s t a a Source #

Obtain an `IndexedFold` by dropping elements from another `IndexedFold`, `IndexedLens`, `IndexedGetter` or `IndexedTraversal` while a predicate holds.

    idroppingWhile :: (i -> a -> Bool) -> IndexedFold i s a          -> IndexedFold i s a
    idroppingWhile :: (i -> a -> Bool) -> IndexedTraversal' i s a    -> IndexedFold i s a -- see notes
    idroppingWhile :: (i -> a -> Bool) -> IndexedLens' i s a         -> IndexedFold i s a -- see notes
    idroppingWhile :: (i -> a -> Bool) -> IndexedGetter i s a        -> IndexedFold i s a

Note: As with `droppingWhile` applying `idroppingWhile` to an `IndexedLens` or `IndexedTraversal` will still allow you to use it as a pseudo-`IndexedTraversal`, but if you change the value of the first target to one where the predicate returns `True`, then you will break the `Traversal` laws and `Traversal` fusion will no longer be sound.

foldByOf :: Fold s a -> (a -> a -> a) -> a -> s -> a Source #

Fold a value using a specified `Fold` and `Monoid` operations. This is like `foldBy` where the `Foldable` instance can be manually specified.

    foldByOf folded ≡ foldBy

    foldByOf :: Getter s a     -> (a -> a -> a) -> a -> s -> a
    foldByOf :: Fold s a       -> (a -> a -> a) -> a -> s -> a
    foldByOf :: Lens' s a      -> (a -> a -> a) -> a -> s -> a
    foldByOf :: Traversal' s a -> (a -> a -> a) -> a -> s -> a
    foldByOf :: Iso' s a       -> (a -> a -> a) -> a -> s -> a

    >>> foldByOf both (++) [] ("hello","world")
    "helloworld"

foldMapByOf :: Fold s a -> (r -> r -> r) -> r -> (a -> r) -> s -> r Source #

Fold a value using a specified `Fold` and `Monoid` operations. This is like `foldMapBy` where the `Foldable` instance can be manually specified.

    foldMapByOf folded ≡ foldMapBy

    foldMapByOf :: Getter s a     -> (r -> r -> r) -> r -> (a -> r) -> s -> r
    foldMapByOf :: Fold s a       -> (r -> r -> r) -> r -> (a -> r) -> s -> r
    foldMapByOf :: Traversal' s a -> (r -> r -> r) -> r -> (a -> r) -> s -> r
    foldMapByOf :: Lens' s a      -> (r -> r -> r) -> r -> (a -> r) -> s -> r
    foldMapByOf :: Iso' s a       -> (r -> r -> r) -> r -> (a -> r) -> s -> r

    >>> foldMapByOf both (+) 0 length ("hello","world")
    10

class Ord k => TraverseMax k m | m -> k where Source #

Allows `IndexedTraversal` of the value at the largest index.

Methods

traverseMax :: IndexedTraversal' k (m v) v Source #

`IndexedTraversal` of the element at the largest index.

#### Instances

Instances details

TraverseMax Int IntMap Source # |
Instance details Defined in Control.Lens.Traversal Methods traverseMax :: IndexedTraversal' Int (IntMap v) v Source #
Ord k => TraverseMax k (Map k) Source # |
Instance details Defined in Control.Lens.Traversal Methods traverseMax :: IndexedTraversal' k (Map k v) v Source #

class Ord k => TraverseMin k m | m -> k where Source #

Allows `IndexedTraversal` the value at the smallest index.

Methods

traverseMin :: IndexedTraversal' k (m v) v Source #

`IndexedTraversal` of the element with the smallest index.

#### Instances

Instances details

TraverseMin Int IntMap Source # |
Instance details Defined in Control.Lens.Traversal Methods traverseMin :: IndexedTraversal' Int (IntMap v) v Source #
Ord k => TraverseMin k (Map k) Source # |
Instance details Defined in Control.Lens.Traversal Methods traverseMin :: IndexedTraversal' k (Map k v) v Source #

type Traversing1' p f s a = Traversing1 p f s s a a Source #

type Traversing' p f s a = Traversing p f s s a a Source #

    type Traversing' f = Simple (Traversing f)

type Traversing1 p f s t a b = Over p (BazaarT1 p f a b) s t a b Source #

type Traversing p f s t a b = Over p (BazaarT p f a b) s t a b Source #

When you see this as an argument to a function, it expects

- to be indexed if `p` is an instance of `Indexed` i,
- to be unindexed if `p` is `(->)`,
- a `Traversal` if `f` is `Applicative`,
- a `Getter` if `f` is only a `Functor` and `Contravariant`,
- a `Lens` if `f` is only a `Functor`,
- a `Fold` if `f` is `Applicative` and `Contravariant`.

type AnIndexedTraversal1' i s a = AnIndexedTraversal1 i s s a a Source #

    type AnIndexedTraversal1' = Simple (AnIndexedTraversal1 i)

type AnIndexedTraversal' i s a = AnIndexedTraversal i s s a a Source #

    type AnIndexedTraversal' = Simple (AnIndexedTraversal i)

type AnIndexedTraversal1 i s t a b = Over (Indexed i) (Bazaar1 (Indexed i) a b) s t a b Source #

When you see this as an argument to a function, it expects an `IndexedTraversal1`.

type AnIndexedTraversal i s t a b = Over (Indexed i) (Bazaar (Indexed i) a b) s t a b Source #

When you see this as an argument to a function, it expects an `IndexedTraversal`.

type ATraversal1' s a = ATraversal1 s s a a Source #

    type ATraversal1' = Simple ATraversal1

type ATraversal1 s t a b = LensLike (Bazaar1 (->) a b) s t a b Source #

When you see this as an argument to a function, it expects a `Traversal1`.

type ATraversal' s a = ATraversal s s a a Source #

    type ATraversal' = Simple ATraversal

type ATraversal s t a b = LensLike (Bazaar (->) a b) s t a b Source #

When you see this as an argument to a function, it expects a `Traversal`.

traverseOf :: LensLike f s t a b -> (a -> f b) -> s -> f t Source #

Map each element of a structure targeted by a `Lens` or `Traversal`, evaluate these actions from left to right, and collect the results.

This function is only provided for consistency, `id` is strictly more general.

    >>> traverseOf each print (1,2,3)
    1
    2
    3
    ((),(),())

    traverseOf ≡ id
    itraverseOf l ≡ traverseOf l . Indexed
    itraverseOf itraversed ≡ itraverse

This yields the obvious law:

    traverse ≡ traverseOf traverse

    traverseOf :: Functor f     => Iso s t a b        -> (a -> f b) -> s -> f t
    traverseOf :: Functor f     => Lens s t a b       -> (a -> f b) -> s -> f t
    traverseOf :: Apply f       => Traversal1 s t a b -> (a -> f b) -> s -> f t
    traverseOf :: Applicative f => Traversal s t a b  -> (a -> f b) -> s -> f t

forOf :: LensLike f s t a b -> s -> (a -> f b) -> f t Source #

A version of `traverseOf` with the arguments flipped, such that:

    >>> forOf each (1,2,3) print
    1
    2
    3
    ((),(),())

This function is only provided for consistency, `flip` is strictly more general.

    forOf ≡ flip
    forOf ≡ flip . traverseOf

    for ≡ forOf traverse
    ifor l s ≡ for l s . Indexed

    forOf :: Functor f => Iso s t a b -> s -> (a -> f b) -> f t
    forOf :: Functor f => Lens s t a b -> s -> (a -> f b) -> f t
    forOf :: Applicative f => Traversal s t a b -> s -> (a -> f b) -> f t

sequenceAOf :: LensLike f s t (f b) b -> s -> f t Source #

Evaluate each action in the structure from left to right, and collect the results.

    >>> sequenceAOf both ([1,2],[3,4])
    [(1,3),(1,4),(2,3),(2,4)]

    sequenceA ≡ sequenceAOf traverse ≡ traverse id
    sequenceAOf l ≡ traverseOf l id ≡ l id

    sequenceAOf :: Functor f => Iso s t (f b) b       -> s -> f t
    sequenceAOf :: Functor f => Lens s t (f b) b      -> s -> f t
    sequenceAOf :: Applicative f => Traversal s t (f b) b -> s -> f t

mapMOf :: LensLike (WrappedMonad m) s t a b -> (a -> m b) -> s -> m t Source #

Map each element of a structure targeted by a `Lens` to a monadic action, evaluate these actions from left to right, and collect the results.

    >>> mapMOf both (\x -> [x, x + 1]) (1,3)
    [(1,3),(1,4),(2,3),(2,4)]

    mapM ≡ mapMOf traverse
    imapMOf l ≡ forM l . Indexed

    mapMOf :: Monad m => Iso s t a b       -> (a -> m b) -> s -> m t
    mapMOf :: Monad m => Lens s t a b      -> (a -> m b) -> s -> m t
    mapMOf :: Monad m => Traversal s t a b -> (a -> m b) -> s -> m t

forMOf :: LensLike (WrappedMonad m) s t a b -> s -> (a -> m b) -> m t Source #

`forMOf` is a flipped version of `mapMOf`, consistent with the definition of `forM`.

    >>> forMOf both (1,3) $ \x -> [x, x + 1]
    [(1,3),(1,4),(2,3),(2,4)]

    forM ≡ forMOf traverse
    forMOf l ≡ flip (mapMOf l)
    iforMOf l s ≡ forM l s . Indexed

    forMOf :: Monad m => Iso s t a b       -> s -> (a -> m b) -> m t
    forMOf :: Monad m => Lens s t a b      -> s -> (a -> m b) -> m t
    forMOf :: Monad m => Traversal s t a b -> s -> (a -> m b) -> m t

sequenceOf :: LensLike (WrappedMonad m) s t (m b) b -> s -> m t Source #

Sequence the (monadic) effects targeted by a `Lens` in a container from left to right.

    >>> sequenceOf each ([1,2],[3,4],[5,6])
    [(1,3,5),(1,3,6),(1,4,5),(1,4,6),(2,3,5),(2,3,6),(2,4,5),(2,4,6)]

    sequence ≡ sequenceOf traverse
    sequenceOf l ≡ mapMOf l id
    sequenceOf l ≡ unwrapMonad . l WrapMonad

    sequenceOf :: Monad m => Iso s t (m b) b       -> s -> m t
    sequenceOf :: Monad m => Lens s t (m b) b      -> s -> m t
    sequenceOf :: Monad m => Traversal s t (m b) b -> s -> m t

transposeOf :: LensLike ZipList s t [a] a -> s -> [t] Source #

This generalizes `transpose` to an arbitrary `Traversal`.

Note: `transpose` handles ragged inputs more intelligently, but for non-ragged inputs:

    >>> transposeOf traverse [[1,2,3],[4,5,6]]
    [[1,4],[2,5],[3,6]]

    transpose ≡ transposeOf traverse

Since every `Lens` is a `Traversal`, we can use this as a form of monadic strength as well:

    transposeOf _2 :: (b, [a]) -> [(b, a)]

mapAccumROf :: LensLike (Backwards (State acc)) s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t) Source #

This generalizes `mapAccumR` to an arbitrary `Traversal`.

    mapAccumR ≡ mapAccumROf traverse

`mapAccumROf` accumulates `State` from right to left.

    mapAccumROf :: Iso s t a b       -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
    mapAccumROf :: Lens s t a b      -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
    mapAccumROf :: Traversal s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)

    mapAccumROf :: LensLike (Backwards (State acc)) s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)

mapAccumLOf :: LensLike (State acc) s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t) Source #

This generalizes `mapAccumL` to an arbitrary `Traversal`.

    mapAccumL ≡ mapAccumLOf traverse

`mapAccumLOf` accumulates `State` from left to right.

    mapAccumLOf :: Iso s t a b       -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
    mapAccumLOf :: Lens s t a b      -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
    mapAccumLOf :: Traversal s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)

    mapAccumLOf :: LensLike (State acc) s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
    mapAccumLOf l f acc0 s = swap (runState (l (a -> state (acc -> swap (f acc a))) s) acc0)

scanr1Of :: LensLike (Backwards (State (Maybe a))) s t a a -> (a -> a -> a) -> s -> t Source #

This permits the use of `scanr1` over an arbitrary `Traversal` or `Lens`.

    scanr1 ≡ scanr1Of traverse

    scanr1Of :: Iso s t a a       -> (a -> a -> a) -> s -> t
    scanr1Of :: Lens s t a a      -> (a -> a -> a) -> s -> t
    scanr1Of :: Traversal s t a a -> (a -> a -> a) -> s -> t

scanl1Of :: LensLike (State (Maybe a)) s t a a -> (a -> a -> a) -> s -> t Source #

This permits the use of `scanl1` over an arbitrary `Traversal` or `Lens`.

    scanl1 ≡ scanl1Of traverse

    scanl1Of :: Iso s t a a       -> (a -> a -> a) -> s -> t
    scanl1Of :: Lens s t a a      -> (a -> a -> a) -> s -> t
    scanl1Of :: Traversal s t a a -> (a -> a -> a) -> s -> t

loci :: Traversal (Bazaar (->) a c s) (Bazaar (->) b c s) a b Source #

This `Traversal` allows you to `traverse` the individual stores in a `Bazaar`.

iloci :: IndexedTraversal i (Bazaar (Indexed i) a c s) (Bazaar (Indexed i) b c s) a b Source #

This `IndexedTraversal` allows you to `traverse` the individual stores in a `Bazaar` with access to their indices.

partsOf :: Functor f => Traversing (->) f s t a a -> LensLike f s t [a] [a] Source #

`partsOf` turns a `Traversal` into a `Lens` that resembles an early version of the `uniplate` (or `biplate`) type.

Note: You should really try to maintain the invariant of the number of children in the list.

    >>> (a,b,c) & partsOf each .~ [x,y,z]
    (x,y,z)

Any extras will be lost. If you do not supply enough, then the remainder will come from the original structure.

    >>> (a,b,c) & partsOf each .~ [w,x,y,z]
    (w,x,y)

    >>> (a,b,c) & partsOf each .~ [x,y]
    (x,y,c)

    >>> ('b', 'a', 'd', 'c') & partsOf each %~ sort
    ('a','b','c','d')

So technically, this is only a `Lens` if you do not change the number of results it returns.

When applied to a `Fold` the result is merely a `Getter`.

    partsOf :: Iso' s a       -> Lens' s [a]
    partsOf :: Lens' s a      -> Lens' s [a]
    partsOf :: Traversal' s a -> Lens' s [a]
    partsOf :: Fold s a       -> Getter s [a]
    partsOf :: Getter s a     -> Getter s [a]

ipartsOf :: forall i p f s t a. (Indexable [i] p, Functor f) => Traversing (Indexed i) f s t a a -> Over p f s t [a] [a] Source #

An indexed version of `partsOf` that receives the entire list of indices as its index.

partsOf' :: ATraversal s t a a -> Lens s t [a] [a] Source #

A type-restricted version of `partsOf` that can only be used with a `Traversal`.

ipartsOf' :: forall i p f s t a. (Indexable [i] p, Functor f) => Over (Indexed i) (Bazaar' (Indexed i) a) s t a a -> Over p f s t [a] [a] Source #

A type-restricted version of `ipartsOf` that can only be used with an `IndexedTraversal`.

unsafePartsOf :: Functor f => Traversing (->) f s t a b -> LensLike f s t [a] [b] Source #

`unsafePartsOf` turns a `Traversal` into a `uniplate` (or `biplate`) family.

If you do not need the types of `s` and `t` to be different, it is recommended that you use `partsOf`.

It is generally safer to traverse with the `Bazaar` rather than use this combinator. However, it is sometimes convenient.

This is unsafe because if you don't supply at least as many `b`'s as you were given `a`'s, then the reconstruction of `t` will result in an error!

When applied to a `Fold` the result is merely a `Getter` (and becomes safe).

    unsafePartsOf :: Iso s t a b       -> Lens s t [a] [b]
    unsafePartsOf :: Lens s t a b      -> Lens s t [a] [b]
    unsafePartsOf :: Traversal s t a b -> Lens s t [a] [b]
    unsafePartsOf :: Fold s a          -> Getter s [a]
    unsafePartsOf :: Getter s a        -> Getter s [a]

iunsafePartsOf :: forall i p f s t a b. (Indexable [i] p, Functor f) => Traversing (Indexed i) f s t a b -> Over p f s t [a] [b] Source #

An indexed version of `unsafePartsOf` that receives the entire list of indices as its index.

unsafePartsOf' :: ATraversal s t a b -> Lens s t [a] [b] Source #

iunsafePartsOf' :: forall i s t a b. Over (Indexed i) (Bazaar (Indexed i) a b) s t a b -> IndexedLens [i] s t [a] [b] Source #

singular :: (HasCallStack, Conjoined p, Functor f) => Traversing p f s t a a -> Over p f s t a a Source #

This converts a `Traversal` that you "know" will target one or more elements to a `Lens`. It can also be used to transform a non-empty `Fold` into a `Getter`.

The resulting `Lens` or `Getter` will be partial if the supplied `Traversal` returns no results.

    >>> [1,2,3] ^. singular _head
    1

    >>> Left (ErrorCall "singular: empty traversal") <- try (evaluate ([] ^. singular _head)) :: IO (Either ErrorCall ())

    >>> Left 4 ^. singular _Left
    4

    >>> [1..10] ^. singular (ix 7)
    8

    >>> [] & singular traverse .~ 0
    []

    singular :: Traversal s t a a          -> Lens s t a a
    singular :: Fold s a                   -> Getter s a
    singular :: IndexedTraversal i s t a a -> IndexedLens i s t a a
    singular :: IndexedFold i s a          -> IndexedGetter i s a

unsafeSingular :: (HasCallStack, Conjoined p, Functor f) => Traversing p f s t a b -> Over p f s t a b Source #

This converts a `Traversal` that you "know" will target only one element to a `Lens`. It can also be used to transform a `Fold` into a `Getter`.

The resulting `Lens` or `Getter` will be partial if the `Traversal` targets nothing or more than one element.

    >>> Left (ErrorCall "unsafeSingular: empty traversal") <- try (evaluate ([] & unsafeSingular traverse .~ 0)) :: IO (Either ErrorCall [Integer])

    unsafeSingular :: Traversal s t a b          -> Lens s t a b
    unsafeSingular :: Fold s a                   -> Getter s a
    unsafeSingular :: IndexedTraversal i s t a b -> IndexedLens i s t a b
    unsafeSingular :: IndexedFold i s a          -> IndexedGetter i s a

holesOf :: Conjoined p => Over p (Bazaar p a a) s t a a -> s -> [Pretext p a a t] Source #

The one-level version of `contextsOf`. This extracts a list of the immediate children according to a given `Traversal` as editable contexts.

Given a context you can use `pos` to see the values, `peek` at what the structure would be like with an edited result, or simply `extract` the original structure.

    propChildren l x = toListOf l x == map pos (holesOf l x)
    propId l x = all (== x) [extract w | w <- holesOf l x]

    holesOf :: Iso' s a                -> s -> [Pretext' (->) a s]
    holesOf :: Lens' s a               -> s -> [Pretext' (->) a s]
    holesOf :: Traversal' s a          -> s -> [Pretext' (->) a s]
    holesOf :: IndexedLens' i s a      -> s -> [Pretext' (Indexed i) a s]
    holesOf :: IndexedTraversal' i s a -> s -> [Pretext' (Indexed i) a s]

holes1Of :: Conjoined p => Over p (Bazaar1 p a a) s t a a -> s -> NonEmpty (Pretext p a a t) Source #

The non-empty version of `holesOf`. This extract a non-empty list of immediate children accroding to a given `Traversal1` as editable contexts.

    >>> let head1 f s = runPretext (NonEmpty.head $ holes1Of traversed1 s) f
    >>> ('a' :| "bc") ^. head1
    'a'

    >>> ('a' :| "bc") & head1 %~ toUpper
    'A' :| "bc"

    holes1Of :: Iso' s a                 -> s -> NonEmpty (Pretext' (->) a s)
    holes1Of :: Lens' s a                -> s -> NonEmpty (Pretext' (->) a s)
    holes1Of :: Traversal1' s a          -> s -> NonEmpty (Pretext' (->) a s)
    holes1Of :: IndexedLens' i s a       -> s -> NonEmpty (Pretext' (Indexed i) a s)
    holes1Of :: IndexedTraversal1' i s a -> s -> NonEmpty (Pretext' (Indexed i) a s)

both :: Bitraversable r => Traversal (r a a) (r b b) a b Source #

Traverse both parts of a `Bitraversable` container with matching types.

Usually that type will be a pair. Use `each` to traverse the elements of arbitrary homogeneous tuples.

    >>> (1,2) & both *~ 10
    (10,20)

    >>> over both length ("hello","world")
    (5,5)

    >>> ("hello","world")^.both
    "helloworld"

    both :: Traversal (a, a)       (b, b)       a b
    both :: Traversal (Either a a) (Either b b) a b

both1 :: Bitraversable1 r => Traversal1 (r a a) (r b b) a b Source #

Traverse both parts of a `Bitraversable1` container with matching types.

Usually that type will be a pair.

    both1 :: Traversal1 (a, a)       (b, b)       a b
    both1 :: Traversal1 (Either a a) (Either b b) a b

beside :: (Representable q, Applicative (Rep q), Applicative f, Bitraversable r) => Optical p q f s t a b -> Optical p q f s' t' a b -> Optical p q f (r s s') (r t t') a b Source #

Apply a different `Traversal` or `Fold` to each side of a `Bitraversable` container.

    beside :: Traversal s t a b                -> Traversal s' t' a b                -> Traversal (r s s') (r t t') a b
    beside :: IndexedTraversal i s t a b       -> IndexedTraversal i s' t' a b       -> IndexedTraversal i (r s s') (r t t') a b
    beside :: IndexPreservingTraversal s t a b -> IndexPreservingTraversal s' t' a b -> IndexPreservingTraversal (r s s') (r t t') a b

    beside :: Traversal s t a b                -> Traversal s' t' a b                -> Traversal (s,s') (t,t') a b
    beside :: Lens s t a b                     -> Lens s' t' a b                     -> Traversal (s,s') (t,t') a b
    beside :: Fold s a                         -> Fold s' a                          -> Fold (s,s') a
    beside :: Getter s a                       -> Getter s' a                        -> Fold (s,s') a

    beside :: IndexedTraversal i s t a b       -> IndexedTraversal i s' t' a b       -> IndexedTraversal i (s,s') (t,t') a b
    beside :: IndexedLens i s t a b            -> IndexedLens i s' t' a b            -> IndexedTraversal i (s,s') (t,t') a b
    beside :: IndexedFold i s a                -> IndexedFold i s' a                 -> IndexedFold i (s,s') a
    beside :: IndexedGetter i s a              -> IndexedGetter i s' a               -> IndexedFold i (s,s') a

    beside :: IndexPreservingTraversal s t a b -> IndexPreservingTraversal s' t' a b -> IndexPreservingTraversal (s,s') (t,t') a b
    beside :: IndexPreservingLens s t a b      -> IndexPreservingLens s' t' a b      -> IndexPreservingTraversal (s,s') (t,t') a b
    beside :: IndexPreservingFold s a          -> IndexPreservingFold s' a           -> IndexPreservingFold (s,s') a
    beside :: IndexPreservingGetter s a        -> IndexPreservingGetter s' a         -> IndexPreservingFold (s,s') a

    >>> ("hello",["world","!!!"])^..beside id traverse
    ["hello","world","!!!"]

taking :: (Conjoined p, Applicative f) => Int -> Traversing p f s t a a -> Over p f s t a a Source #

Visit the first n targets of a `Traversal`, `Fold`, `Getter` or `Lens`.

    >>> [("hello","world"),("!!!","!!!")]^.. taking 2 (traverse.both)
    ["hello","world"]

    >>> timingOut $ [1..] ^.. taking 3 traverse
    [1,2,3]

    >>> over (taking 5 traverse) succ "hello world"
    "ifmmp world"

    taking :: Int -> Traversal' s a                   -> Traversal' s a
    taking :: Int -> Lens' s a                        -> Traversal' s a
    taking :: Int -> Iso' s a                         -> Traversal' s a
    taking :: Int -> Prism' s a                       -> Traversal' s a
    taking :: Int -> Getter s a                       -> Fold s a
    taking :: Int -> Fold s a                         -> Fold s a
    taking :: Int -> IndexedTraversal' i s a          -> IndexedTraversal' i s a
    taking :: Int -> IndexedLens' i s a               -> IndexedTraversal' i s a
    taking :: Int -> IndexedGetter i s a              -> IndexedFold i s a
    taking :: Int -> IndexedFold i s a                -> IndexedFold i s a

dropping :: (Conjoined p, Applicative f) => Int -> Over p (Indexing f) s t a a -> Over p f s t a a Source #

Visit all but the first n targets of a `Traversal`, `Fold`, `Getter` or `Lens`.

    >>> ("hello","world") ^? dropping 1 both
    Just "world"

Dropping works on infinite traversals as well:

    >>> [1..] ^? dropping 1 folded
    Just 2

    dropping :: Int -> Traversal' s a                   -> Traversal' s a
    dropping :: Int -> Lens' s a                        -> Traversal' s a
    dropping :: Int -> Iso' s a                         -> Traversal' s a
    dropping :: Int -> Prism' s a                       -> Traversal' s a
    dropping :: Int -> Getter s a                       -> Fold s a
    dropping :: Int -> Fold s a                         -> Fold s a
    dropping :: Int -> IndexedTraversal' i s a          -> IndexedTraversal' i s a
    dropping :: Int -> IndexedLens' i s a               -> IndexedTraversal' i s a
    dropping :: Int -> IndexedGetter i s a              -> IndexedFold i s a
    dropping :: Int -> IndexedFold i s a                -> IndexedFold i s a

cloneTraversal :: ATraversal s t a b -> Traversal s t a b Source #

A `Traversal` is completely characterized by its behavior on a `Bazaar`.

Cloning a `Traversal` is one way to make sure you aren't given something weaker, such as a `Fold` and can be used as a way to pass around traversals that have to be monomorphic in `f`.

Note: This only accepts a proper `Traversal` (or `Lens`). To clone a `Lens` as such, use `cloneLens`.

Note: It is usually better to use `ReifiedTraversal` and `runTraversal` than to `cloneTraversal`. The former can execute at full speed, while the latter needs to round trip through the `Bazaar`.

    >>> let foo l a = (view (getting (cloneTraversal l)) a, set (cloneTraversal l) 10 a)
    >>> foo both ("hello","world")
    ("helloworld",(10,10))

    cloneTraversal :: LensLike (Bazaar (->) a b) s t a b -> Traversal s t a b

cloneIndexPreservingTraversal :: ATraversal s t a b -> IndexPreservingTraversal s t a b Source #

Clone a `Traversal` yielding an `IndexPreservingTraversal` that passes through whatever index it is composed with.

cloneIndexedTraversal :: AnIndexedTraversal i s t a b -> IndexedTraversal i s t a b Source #

Clone an `IndexedTraversal` yielding an `IndexedTraversal` with the same index.

cloneTraversal1 :: ATraversal1 s t a b -> Traversal1 s t a b Source #

A `Traversal1` is completely characterized by its behavior on a `Bazaar1`.

cloneIndexPreservingTraversal1 :: ATraversal1 s t a b -> IndexPreservingTraversal1 s t a b Source #

Clone a `Traversal1` yielding an `IndexPreservingTraversal1` that passes through whatever index it is composed with.

cloneIndexedTraversal1 :: AnIndexedTraversal1 i s t a b -> IndexedTraversal1 i s t a b Source #

Clone an `IndexedTraversal1` yielding an `IndexedTraversal1` with the same index.

itraverseOf :: (Indexed i a (f b) -> s -> f t) -> (i -> a -> f b) -> s -> f t Source #

Traversal with an index.

NB: When you don't need access to the index then you can just apply your `IndexedTraversal` directly as a function!

    itraverseOf ≡ withIndex
    traverseOf l = itraverseOf l . const = id

    itraverseOf :: Functor f     => IndexedLens i s t a b       -> (i -> a -> f b) -> s -> f t
    itraverseOf :: Applicative f => IndexedTraversal i s t a b  -> (i -> a -> f b) -> s -> f t
    itraverseOf :: Apply f       => IndexedTraversal1 i s t a b -> (i -> a -> f b) -> s -> f t

iforOf :: (Indexed i a (f b) -> s -> f t) -> s -> (i -> a -> f b) -> f t Source #

Traverse with an index (and the arguments flipped).

    forOf l a ≡ iforOf l a . const
    iforOf ≡ flip . itraverseOf

    iforOf :: Functor f     => IndexedLens i s t a b       -> s -> (i -> a -> f b) -> f t
    iforOf :: Applicative f => IndexedTraversal i s t a b  -> s -> (i -> a -> f b) -> f t
    iforOf :: Apply f       => IndexedTraversal1 i s t a b -> s -> (i -> a -> f b) -> f t

imapMOf :: Over (Indexed i) (WrappedMonad m) s t a b -> (i -> a -> m b) -> s -> m t Source #

Map each element of a structure targeted by a `Lens` to a monadic action, evaluate these actions from left to right, and collect the results, with access its position.

When you don't need access to the index `mapMOf` is more liberal in what it can accept.

    mapMOf l ≡ imapMOf l . const

    imapMOf :: Monad m => IndexedLens       i s t a b -> (i -> a -> m b) -> s -> m t
    imapMOf :: Monad m => IndexedTraversal  i s t a b -> (i -> a -> m b) -> s -> m t
    imapMOf :: Bind  m => IndexedTraversal1 i s t a b -> (i -> a -> m b) -> s -> m t

iforMOf :: (Indexed i a (WrappedMonad m b) -> s -> WrappedMonad m t) -> s -> (i -> a -> m b) -> m t Source #

Map each element of a structure targeted by a `Lens` to a monadic action, evaluate these actions from left to right, and collect the results, with access its position (and the arguments flipped).

    forMOf l a ≡ iforMOf l a . const
    iforMOf ≡ flip . imapMOf

    iforMOf :: Monad m => IndexedLens i s t a b      -> s -> (i -> a -> m b) -> m t
    iforMOf :: Monad m => IndexedTraversal i s t a b -> s -> (i -> a -> m b) -> m t

imapAccumROf :: Over (Indexed i) (Backwards (State acc)) s t a b -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t) Source #

Generalizes `mapAccumR` to an arbitrary `IndexedTraversal` with access to the index.

`imapAccumROf` accumulates state from right to left.

    mapAccumROf l ≡ imapAccumROf l . const

    imapAccumROf :: IndexedLens i s t a b      -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
    imapAccumROf :: IndexedTraversal i s t a b -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t)

imapAccumLOf :: Over (Indexed i) (State acc) s t a b -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t) Source #

Generalizes `mapAccumL` to an arbitrary `IndexedTraversal` with access to the index.

`imapAccumLOf` accumulates state from left to right.

    mapAccumLOf l ≡ imapAccumLOf l . const

    imapAccumLOf :: IndexedLens i s t a b      -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
    imapAccumLOf :: IndexedTraversal i s t a b -> (i -> acc -> a -> (acc, b)) -> acc -> s -> (acc, t)

traversed :: Traversable f => IndexedTraversal Int (f a) (f b) a b Source #

Traverse any `Traversable` container. This is an `IndexedTraversal` that is indexed by ordinal position.

traversed1 :: Traversable1 f => IndexedTraversal1 Int (f a) (f b) a b Source #

Traverse any `Traversable1` container. This is an `IndexedTraversal1` that is indexed by ordinal position.

traversed64 :: Traversable f => IndexedTraversal Int64 (f a) (f b) a b Source #

Traverse any `Traversable` container. This is an `IndexedTraversal` that is indexed by ordinal position.

ignored :: Applicative f => pafb -> s -> f s Source #

This is the trivial empty `Traversal`.

    ignored :: IndexedTraversal i s s a b

    ignored ≡ const pure

    >>> 6 & ignored %~ absurd
    6

elementOf :: Applicative f => LensLike (Indexing f) s t a a -> Int -> IndexedLensLike Int f s t a a Source #

Traverse the nth `elementOf` a `Traversal`, `Lens` or `Iso` if it exists.

    >>> [[1],[3,4]] & elementOf (traverse.traverse) 1 .~ 5
    [[1],[5,4]]

    >>> [[1],[3,4]] ^? elementOf (folded.folded) 1
    Just 3

    >>> timingOut $ ['a'..] ^?! elementOf folded 5
    'f'

    >>> timingOut $ take 10 $ elementOf traverse 3 .~ 16 $ [0..]
    [0,1,2,16,4,5,6,7,8,9]

    elementOf :: Traversal' s a -> Int -> IndexedTraversal' Int s a
    elementOf :: Fold s a       -> Int -> IndexedFold Int s a

element :: Traversable t => Int -> IndexedTraversal' Int (t a) a Source #

Traverse the nth element of a `Traversable` container.

    element ≡ elementOf traverse

elementsOf :: Applicative f => LensLike (Indexing f) s t a a -> (Int -> Bool) -> IndexedLensLike Int f s t a a Source #

Traverse (or fold) selected elements of a `Traversal` (or `Fold`) where their ordinal positions match a predicate.

    elementsOf :: Traversal' s a -> (Int -> Bool) -> IndexedTraversal' Int s a
    elementsOf :: Fold s a       -> (Int -> Bool) -> IndexedFold Int s a

elements :: Traversable t => (Int -> Bool) -> IndexedTraversal' Int (t a) a Source #

Traverse elements of a `Traversable` container where their ordinal positions match a predicate.

    elements ≡ elementsOf traverse

failover :: Alternative m => LensLike ((,) Any) s t a b -> (a -> b) -> s -> m t Source #

Try to map a function over this `Traversal`, failing if the `Traversal` has no targets.

    >>> failover (element 3) (*2) [1,2] :: Maybe [Int]
    Nothing

    >>> failover _Left (*2) (Right 4) :: Maybe (Either Int Int)
    Nothing

    >>> failover _Right (*2) (Right 4) :: Maybe (Either Int Int)
    Just (Right 8)

    failover :: Alternative m => Traversal s t a b -> (a -> b) -> s -> m t

ifailover :: Alternative m => Over (Indexed i) ((,) Any) s t a b -> (i -> a -> b) -> s -> m t Source #

Try to map a function which uses the index over this `IndexedTraversal`, failing if the `IndexedTraversal` has no targets.

    ifailover :: Alternative m => IndexedTraversal i s t a b -> (i -> a -> b) -> s -> m t

failing :: (Conjoined p, Applicative f) => Traversing p f s t a b -> Over p f s t a b -> Over p f s t a b infixl 5 Source #

Try the first `Traversal` (or `Fold`), falling back on the second `Traversal` (or `Fold`) if it returns no entries.

This is only a valid `Traversal` if the second `Traversal` is disjoint from the result of the first or returns exactly the same results. These conditions are trivially met when given a `Lens`, `Iso`, `Getter`, `Prism` or "affine" Traversal -- one that has 0 or 1 target.

Mutatis mutandis for `Fold`.

    >>> [0,1,2,3] ^? failing (ix 1) (ix 2)
    Just 1

    >>> [0,1,2,3] ^? failing (ix 42) (ix 2)
    Just 2

    failing :: Traversal s t a b -> Traversal s t a b -> Traversal s t a b
    failing :: Prism s t a b     -> Prism s t a b     -> Traversal s t a b
    failing :: Fold s a          -> Fold s a          -> Fold s a

These cases are also supported, trivially, but are boring, because the left hand side always succeeds.

    failing :: Lens s t a b      -> Traversal s t a b -> Traversal s t a b
    failing :: Iso s t a b       -> Traversal s t a b -> Traversal s t a b
    failing :: Equality s t a b  -> Traversal s t a b -> Traversal s t a b
    failing :: Getter s a        -> Fold s a          -> Fold s a

If both of the inputs are indexed, the result is also indexed, so you can apply this to a pair of indexed traversals or indexed folds, obtaining an indexed traversal or indexed fold.

    failing :: IndexedTraversal i s t a b -> IndexedTraversal i s t a b -> IndexedTraversal i s t a b
    failing :: IndexedFold i s a          -> IndexedFold i s a          -> IndexedFold i s a

These cases are also supported, trivially, but are boring, because the left hand side always succeeds.

    failing :: IndexedLens i s t a b      -> IndexedTraversal i s t a b -> IndexedTraversal i s t a b
    failing :: IndexedGetter i s a        -> IndexedGetter i s a        -> IndexedFold i s a

deepOf :: (Conjoined p, Applicative f) => LensLike f s t s t -> Traversing p f s t a b -> Over p f s t a b Source #

Try the second traversal. If it returns no entries, try again with all entries from the first traversal, recursively.

    deepOf :: Fold s s          -> Fold s a                   -> Fold s a
    deepOf :: Traversal' s s    -> Traversal' s a             -> Traversal' s a
    deepOf :: Traversal s t s t -> Traversal s t a b          -> Traversal s t a b
    deepOf :: Fold s s          -> IndexedFold i s a          -> IndexedFold i s a
    deepOf :: Traversal s t s t -> IndexedTraversal i s t a b -> IndexedTraversal i s t a b

confusing :: Applicative f => LensLike (Curried (Yoneda f) (Yoneda f)) s t a b -> LensLike f s t a b Source #

Fuse a `Traversal` by reassociating all of the `(`<*>`)` operations to the left and fusing all of the `fmap` calls into one. This is particularly useful when constructing a `Traversal` using operations from GHC.Generics.

Given a pair of `Traversal`s `foo` and `bar`,

    confusing (foo.bar) = foo.bar

However, `foo` and `bar` are each going to use the `Applicative` they are given.

`confusing` exploits the `Yoneda` lemma to merge their separate uses of `fmap` into a single `fmap`. and it further exploits an interesting property of the right Kan lift (or `Curried`) to left associate all of the uses of `(`<*>`)` to make it possible to fuse together more fmaps.

This is particularly effective when the choice of functor `f` is unknown at compile time or when the `Traversal` `foo.bar` in the above description is recursive or complex enough to prevent inlining.

`fusing` is a version of this combinator suitable for fusing lenses.

    confusing :: Traversal s t a b -> Traversal s t a b

traverseByOf :: Traversal s t a b -> (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (a -> f b) -> s -> f t Source #

Traverse a container using a specified `Applicative`.

This is like `traverseBy` where the `Traversable` instance can be specified by any `Traversal`

    traverseByOf traverse ≡ traverseBy

sequenceByOf :: Traversal s t (f b) b -> (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> s -> f t Source #

Sequence a container using a specified `Applicative`.

This is like `traverseBy` where the `Traversable` instance can be specified by any `Traversal`

    sequenceByOf traverse ≡ sequenceBy

levels :: Applicative f => Traversing (->) f s t a b -> IndexedLensLike Int f s t (Level () a) (Level () b) Source #

This provides a breadth-first `Traversal` or `Fold` of the individual `levels` of any other `Traversal` or `Fold` via iterative deepening depth-first search. The levels are returned to you in a compressed format.

This can permit us to extract the `levels` directly:

    >>> ["hello","world"]^..levels (traverse.traverse)
    [Zero,Zero,One () 'h',Two 0 (One () 'e') (One () 'w'),Two 0 (One () 'l') (One () 'o'),Two 0 (One () 'l') (One () 'r'),Two 0 (One () 'o') (One () 'l'),One () 'd']

But we can also traverse them in turn:

    >>> ["hello","world"]^..levels (traverse.traverse).traverse
    "hewlolrold"

We can use this to traverse to a fixed depth in the tree of (`<*>`) used in the `Traversal`:

    >>> ["hello","world"] & taking 4 (levels (traverse.traverse)).traverse %~ toUpper
    ["HEllo","World"]

Or we can use it to traverse the first `n` elements in found in that `Traversal` regardless of the depth at which they were found.

    >>> ["hello","world"] & taking 4 (levels (traverse.traverse).traverse) %~ toUpper
    ["HELlo","World"]

The resulting `Traversal` of the `levels` which is indexed by the depth of each `Level`.

    >>> ["dog","cat"]^@..levels (traverse.traverse) <. traverse
    [(2,'d'),(3,'o'),(3,'c'),(4,'g'),(4,'a'),(5,'t')]

    levels :: Traversal s t a b      -> IndexedTraversal Int s t (Level () a) (Level () b)
    levels :: Fold s a               -> IndexedFold Int s (Level () a)

Note: Internally this is implemented by using an illegal `Applicative`, as it extracts information in an order that violates the `Applicative` laws.

ilevels :: Applicative f => Traversing (Indexed i) f s t a b -> IndexedLensLike Int f s t (Level i a) (Level j b) Source #

This provides a breadth-first `Traversal` or `Fold` of the individual levels of any other `Traversal` or `Fold` via iterative deepening depth-first search. The levels are returned to you in a compressed format.

This is similar to `levels`, but retains the index of the original `IndexedTraversal`, so you can access it when traversing the levels later on.

    >>> ["dog","cat"]^@..ilevels (traversed<.>traversed).itraversed
    [((0,0),'d'),((0,1),'o'),((1,0),'c'),((0,2),'g'),((1,1),'a'),((1,2),'t')]

The resulting `Traversal` of the levels which is indexed by the depth of each `Level`.

    >>> ["dog","cat"]^@..ilevels (traversed<.>traversed)<.>itraversed
    [((2,(0,0)),'d'),((3,(0,1)),'o'),((3,(1,0)),'c'),((4,(0,2)),'g'),((4,(1,1)),'a'),((5,(1,2)),'t')]

    ilevels :: IndexedTraversal i s t a b      -> IndexedTraversal Int s t (Level i a) (Level i b)
    ilevels :: IndexedFold i s a               -> IndexedFold Int s (Level i a)

Note: Internally this is implemented by using an illegal `Applicative`, as it extracts information in an order that violates the `Applicative` laws.

type ReifiedPrism' s a = ReifiedPrism s s a a Source #

    type ReifiedPrism' = Simple ReifiedPrism

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

type ReifiedIso' s a = ReifiedIso s s a a Source #

    type ReifiedIso' = Simple ReifiedIso

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

type ReifiedIndexedSetter' i s a = ReifiedIndexedSetter i s s a a Source #

    type ReifiedIndexedSetter' i = Simple (ReifiedIndexedSetter i)

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

type ReifiedSetter' s a = ReifiedSetter s s a a Source #

    type ReifiedSetter' = Simple ReifiedSetter

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 ReifiedIndexedFold i s a Source #

Constructors

IndexedFold |

Fields

- runIndexedFold :: IndexedFold i s a

#### 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 # (<$) :: a -> ReifiedIndexedFold i s b -> ReifiedIndexedFold i s a #
Plus (ReifiedIndexedFold i s) Source # |
Instance details Defined in Control.Lens.Reified Methods zero :: ReifiedIndexedFold i s a Source #
Alt (ReifiedIndexedFold i s) Source # |
Instance details Defined in Control.Lens.Reified Methods (<!>) :: ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a Source # some :: Applicative (ReifiedIndexedFold i s) => ReifiedIndexedFold i s a -> ReifiedIndexedFold i s [a] Source # many :: Applicative (ReifiedIndexedFold i s) => ReifiedIndexedFold i s a -> ReifiedIndexedFold i s [a] Source #
Semigroup (ReifiedIndexedFold i s a) Source # |
Instance details Defined in Control.Lens.Reified Methods (<>) :: ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a sconcat :: NonEmpty (ReifiedIndexedFold i s a) -> ReifiedIndexedFold i s a stimes :: Integral b => b -> ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a
Monoid (ReifiedIndexedFold i s a) Source # |
Instance details Defined in Control.Lens.Reified Methods mempty :: ReifiedIndexedFold i s a mappend :: ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a mconcat :: [ReifiedIndexedFold i s a] -> ReifiedIndexedFold i s a
type Rep (ReifiedIndexedFold i) Source # |
Instance details Defined in Control.Lens.Reified type Rep (ReifiedIndexedFold i) = Compose [] ((,) 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

Instances details

ArrowChoice ReifiedFold Source # |
Instance details Defined in Control.Lens.Reified 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
ArrowApply ReifiedFold Source # |
Instance details Defined in Control.Lens.Reified Methods app :: ReifiedFold (ReifiedFold b c, b) c
Arrow ReifiedFold Source # |
Instance details Defined in Control.Lens.Reified 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')
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 #
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 #
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 #

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 local :: (s -> s) -> ReifiedFold s a -> ReifiedFold s a reader :: (s -> a) -> ReifiedFold s a
Monad (ReifiedFold s) Source # |
Instance details Defined in Control.Lens.Reified 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
Functor (ReifiedFold s) Source # |
Instance details Defined in Control.Lens.Reified Methods fmap :: (a -> b) -> ReifiedFold s a -> ReifiedFold s b # (<$) :: a -> ReifiedFold s b -> ReifiedFold s a #
Applicative (ReifiedFold s) Source # |
Instance details Defined in Control.Lens.Reified Methods pure :: a -> ReifiedFold s a (<*>) :: ReifiedFold s (a -> b) -> ReifiedFold s a -> ReifiedFold s b liftA2 :: (a -> b -> c) -> ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s c (*>) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s b (<*) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s a
MonadPlus (ReifiedFold s) Source # |
Instance details Defined in Control.Lens.Reified Methods mzero :: ReifiedFold s a mplus :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a
Alternative (ReifiedFold s) Source # |
Instance details Defined in Control.Lens.Reified 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]
Plus (ReifiedFold s) Source # |
Instance details Defined in Control.Lens.Reified Methods zero :: ReifiedFold s a Source #
Alt (ReifiedFold s) Source # |
Instance details Defined in Control.Lens.Reified Methods (<!>) :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a Source # some :: Applicative (ReifiedFold s) => ReifiedFold s a -> ReifiedFold s [a] Source # many :: Applicative (ReifiedFold s) => ReifiedFold s a -> ReifiedFold s [a] Source #
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 #
Category ReifiedFold Source # |
Instance details Defined in Control.Lens.Reified Methods id :: forall (a :: k). ReifiedFold a a (.) :: forall (b :: k) (c :: k) (a :: k). ReifiedFold b c -> ReifiedFold a b -> ReifiedFold a c
Semigroup (ReifiedFold s a) Source # |
Instance details Defined in Control.Lens.Reified Methods (<>) :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a sconcat :: NonEmpty (ReifiedFold s a) -> ReifiedFold s a stimes :: Integral b => b -> ReifiedFold s a -> ReifiedFold s a
Monoid (ReifiedFold s a) Source # |
Instance details Defined in Control.Lens.Reified Methods mempty :: ReifiedFold s a mappend :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a mconcat :: [ReifiedFold s a] -> ReifiedFold s a
type Rep ReifiedFold Source # |
Instance details Defined in Control.Lens.Reified type Rep ReifiedFold = []

newtype ReifiedIndexedGetter i s a Source #

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

Constructors

IndexedGetter |

Fields

- runIndexedGetter :: IndexedGetter i s a

#### Instances

Instances details

Representable (ReifiedIndexedGetter i) Source # |
Instance details Defined in Control.Lens.Reified Associated Types type Rep (ReifiedIndexedGetter i) :: Type -> Type Source # Methods tabulate :: (d -> Rep (ReifiedIndexedGetter i) c) -> ReifiedIndexedGetter i d c Source #
Strong (ReifiedIndexedGetter i) Source # |
Instance details Defined in Control.Lens.Reified Methods first' :: ReifiedIndexedGetter i a b -> ReifiedIndexedGetter i (a, c) (b, c) Source # second' :: ReifiedIndexedGetter i a b -> ReifiedIndexedGetter i (c, a) (c, b) Source #
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 # (<$) :: a -> ReifiedIndexedGetter i s b -> ReifiedIndexedGetter i s a #
Semigroup i => Apply (ReifiedIndexedGetter i s) Source # |

Instance details

Defined in Control.Lens.Reified

Methods

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

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

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

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

type Rep (ReifiedIndexedGetter i) Source # |
Instance details Defined in Control.Lens.Reified type Rep (ReifiedIndexedGetter i) = (,) i

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

Instances details

ArrowLoop ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Methods loop :: ReifiedGetter (b, d) (c, d) -> ReifiedGetter b c
ArrowChoice ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Methods left :: ReifiedGetter b c -> ReifiedGetter (Either b d) (Either c d) right :: ReifiedGetter b c -> ReifiedGetter (Either d b) (Either d c) (+++) :: ReifiedGetter b c -> ReifiedGetter b' c' -> ReifiedGetter (Either b b') (Either c c') (|||) :: ReifiedGetter b d -> ReifiedGetter c d -> ReifiedGetter (Either b c) d
ArrowApply ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Methods app :: ReifiedGetter (ReifiedGetter b c, b) c
Arrow ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified 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')
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 #
Corepresentable ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Associated Types type Corep ReifiedGetter :: Type -> Type Source # Methods cotabulate :: (Corep ReifiedGetter d -> c) -> ReifiedGetter d c Source #
Choice ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Methods left' :: ReifiedGetter a b -> ReifiedGetter (Either a c) (Either b c) Source # right' :: ReifiedGetter a b -> ReifiedGetter (Either c a) (Either c b) Source #
Closed ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Methods closed :: ReifiedGetter a b -> ReifiedGetter (x -> a) (x -> 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 #
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 #
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 #

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 #
Sieve ReifiedGetter Identity Source # |
Instance details Defined in Control.Lens.Reified Methods sieve :: ReifiedGetter a b -> a -> Identity b Source #
Cosieve ReifiedGetter Identity Source # |
Instance details Defined in Control.Lens.Reified Methods cosieve :: ReifiedGetter a b -> Identity a -> b Source #
MonadReader s (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified Methods ask :: ReifiedGetter s s local :: (s -> s) -> ReifiedGetter s a -> ReifiedGetter s a reader :: (s -> a) -> ReifiedGetter s a
Monad (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified 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
Functor (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified Methods fmap :: (a -> b) -> ReifiedGetter s a -> ReifiedGetter s b # (<$) :: a -> ReifiedGetter s b -> ReifiedGetter s a #
Applicative (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified Methods pure :: a -> ReifiedGetter s a (<*>) :: ReifiedGetter s (a -> b) -> ReifiedGetter s a -> ReifiedGetter s b liftA2 :: (a -> b -> c) -> ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s c (*>) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s b (<*) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s a
Monoid s => Comonad (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified Methods extract :: ReifiedGetter s a -> a Source # duplicate :: ReifiedGetter s a -> ReifiedGetter s (ReifiedGetter s a) Source # extend :: (ReifiedGetter s a -> b) -> ReifiedGetter s a -> ReifiedGetter s b Source #
Monoid s => ComonadApply (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified Methods (<@>) :: ReifiedGetter s (a -> b) -> ReifiedGetter s a -> ReifiedGetter s b Source # (@>) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s b Source # (<@) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s a Source #
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 Methods (<.>) :: ReifiedGetter s (a -> b) -> ReifiedGetter s a -> ReifiedGetter s b Source # (.>) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s b Source # (<.) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s a Source # liftF2 :: (a -> b -> c) -> ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s c Source #
Bind (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified Methods (>>-) :: ReifiedGetter s a -> (a -> ReifiedGetter s b) -> ReifiedGetter s b Source # join :: ReifiedGetter s (ReifiedGetter s a) -> ReifiedGetter s a Source #
Semigroup s => Extend (ReifiedGetter s) Source # |
Instance details Defined in Control.Lens.Reified Methods duplicated :: ReifiedGetter s a -> ReifiedGetter s (ReifiedGetter s a) Source # extended :: (ReifiedGetter s a -> b) -> ReifiedGetter s a -> ReifiedGetter s b Source #
Category ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified Methods id :: forall (a :: k). ReifiedGetter a a (.) :: forall (b :: k) (c :: k) (a :: k). ReifiedGetter b c -> ReifiedGetter a b -> ReifiedGetter a c
type Rep ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified type Rep ReifiedGetter = Identity
type Corep ReifiedGetter Source # |
Instance details Defined in Control.Lens.Reified type Corep ReifiedGetter = Identity

type ReifiedTraversal' s a = ReifiedTraversal s s a a Source #

    type ReifiedTraversal' = Simple ReifiedTraversal

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

type ReifiedIndexedTraversal' i s a = ReifiedIndexedTraversal i s s a a Source #

    type ReifiedIndexedTraversal' i = Simple (ReifiedIndexedTraversal i)

newtype ReifiedIndexedTraversal i s t a b Source #

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

Constructors

IndexedTraversal |

Fields

- runIndexedTraversal :: IndexedTraversal i s t a b

type ReifiedIndexedLens' i s a = ReifiedIndexedLens i s s a a Source #

    type ReifiedIndexedLens' i = Simple (ReifiedIndexedLens i)

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

type ReifiedLens' s a = ReifiedLens s s a a Source #

    type ReifiedLens' = Simple ReifiedLens

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

class (FunctorWithIndex i t, FoldableWithIndex i t, Traversable t) => TraversableWithIndex i t | t -> i where Source #

A `Traversable` with an additional index.

An instance must satisfy a (modified) form of the `Traversable` laws:

    itraverse (const Identity) ≡ Identity
    fmap (itraverse f) . itraverse g ≡ getCompose . itraverse (\i -> Compose . fmap (f i) . g i)

Minimal complete definition

Nothing

Methods

itraverse :: Applicative f => (i -> a -> f b) -> t a -> f (t b) Source #

Traverse an indexed container.

    itraverse ≡ itraverseOf itraversed

default itraverse :: (i ~ Int, Applicative f) => (i -> a -> f b) -> t a -> f (t b) Source #

itraversed :: IndexedTraversal i (t a) (t b) a b Source #

The `IndexedTraversal` of a `TraversableWithIndex` container.

#### Instances

Instances details

TraversableWithIndex Int [] Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Int -> a -> f b) -> [a] -> f [b] Source # itraversed :: IndexedTraversal Int [a] [b] a b Source #
TraversableWithIndex Int NonEmpty Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Int -> a -> f b) -> NonEmpty a -> f (NonEmpty b) Source # itraversed :: IndexedTraversal Int (NonEmpty a) (NonEmpty b) a b Source #
TraversableWithIndex Int ZipList Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Int -> a -> f b) -> ZipList a -> f (ZipList b) Source # itraversed :: IndexedTraversal Int (ZipList a) (ZipList b) a b Source #
TraversableWithIndex Int IntMap Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Int -> a -> f b) -> IntMap a -> f (IntMap b) Source # itraversed :: IndexedTraversal Int (IntMap a) (IntMap b) a b Source #
TraversableWithIndex Int Vector Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Int -> a -> f b) -> Vector a -> f (Vector b) Source # itraversed :: IndexedTraversal Int (Vector a) (Vector b) a b Source #
TraversableWithIndex Int Seq Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Int -> a -> f b) -> Seq a -> f (Seq b) Source # itraversed :: IndexedTraversal Int (Seq a) (Seq b) a b Source #
TraversableWithIndex Int Deque Source # |
Instance details Defined in Control.Lens.Internal.Deque Methods itraverse :: Applicative f => (Int -> a -> f b) -> Deque a -> f (Deque b) Source # itraversed :: IndexedTraversal Int (Deque a) (Deque b) a b Source #
TraversableWithIndex () Maybe Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (() -> a -> f b) -> Maybe a -> f (Maybe b) Source # itraversed :: IndexedTraversal () (Maybe a) (Maybe b) a b Source #
TraversableWithIndex () Par1 Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (() -> a -> f b) -> Par1 a -> f (Par1 b) Source # itraversed :: IndexedTraversal () (Par1 a) (Par1 b) a b Source #
TraversableWithIndex () Identity Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (() -> a -> f b) -> Identity a -> f (Identity b) Source # itraversed :: IndexedTraversal () (Identity a) (Identity b) a b Source #
Ix i => TraversableWithIndex i (Array i) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (i -> a -> f b) -> Array i a -> f (Array i b) Source # itraversed :: IndexedTraversal i (Array i a) (Array i b) a b Source #
TraversableWithIndex i (Level i) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (i -> a -> f b) -> Level i a -> f (Level i b) Source # itraversed :: IndexedTraversal i (Level i a) (Level i b) a b Source #
TraversableWithIndex k (HashMap k) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (k -> a -> f b) -> HashMap k a -> f (HashMap k b) Source # itraversed :: IndexedTraversal k (HashMap k a) (HashMap k b) a b Source #
TraversableWithIndex k (Map k) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (k -> a -> f b) -> Map k a -> f (Map k b) Source # itraversed :: IndexedTraversal k (Map k a) (Map k b) a b Source #
TraversableWithIndex k ((,) k) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (k -> a -> f b) -> (k, a) -> f (k, b) Source # itraversed :: IndexedTraversal k (k, a) (k, b) a b Source #
TraversableWithIndex Void (V1 :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Void -> a -> f b) -> V1 a -> f (V1 b) Source # itraversed :: IndexedTraversal Void (V1 a) (V1 b) a b Source #
TraversableWithIndex Void (U1 :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Void -> a -> f b) -> U1 a -> f (U1 b) Source # itraversed :: IndexedTraversal Void (U1 a) (U1 b) a b Source #
TraversableWithIndex Void (Proxy :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Void -> a -> f b) -> Proxy a -> f (Proxy b) Source # itraversed :: IndexedTraversal Void (Proxy a) (Proxy b) a b Source #
TraversableWithIndex () (Tagged a) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (() -> a0 -> f b) -> Tagged a a0 -> f (Tagged a b) Source # itraversed :: IndexedTraversal () (Tagged a a0) (Tagged a b) a0 b Source #
TraversableWithIndex i f => TraversableWithIndex i (Rec1 f) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => (i -> a -> f0 b) -> Rec1 f a -> f0 (Rec1 f b) Source # itraversed :: IndexedTraversal i (Rec1 f a) (Rec1 f b) a b Source #
TraversableWithIndex i m => TraversableWithIndex i (IdentityT m) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (i -> a -> f b) -> IdentityT m a -> f (IdentityT m b) Source # itraversed :: IndexedTraversal i (IdentityT m a) (IdentityT m b) a b Source #
TraversableWithIndex i f => TraversableWithIndex i (Reverse f) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => (i -> a -> f0 b) -> Reverse f a -> f0 (Reverse f b) Source # itraversed :: IndexedTraversal i (Reverse f a) (Reverse f b) a b Source #
TraversableWithIndex i f => TraversableWithIndex i (Backwards f) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => (i -> a -> f0 b) -> Backwards f a -> f0 (Backwards f b) Source # itraversed :: IndexedTraversal i (Backwards f a) (Backwards f b) a b Source #
TraversableWithIndex i (Magma i t b) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (i -> a -> f b0) -> Magma i t b a -> f (Magma i t b b0) Source # itraversed :: IndexedTraversal i (Magma i t b a) (Magma i t b b0) a b0 Source #
TraversableWithIndex Void (K1 i c :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => (Void -> a -> f b) -> K1 i c a -> f (K1 i c b) Source # itraversed :: IndexedTraversal Void (K1 i c a) (K1 i c b) a b Source #
TraversableWithIndex [Int] Tree Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f => ([Int] -> a -> f b) -> Tree a -> f (Tree b) Source # itraversed :: IndexedTraversal [Int] (Tree a) (Tree b) a b Source #
TraversableWithIndex i f => TraversableWithIndex [i] (Cofree f) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => ([i] -> a -> f0 b) -> Cofree f a -> f0 (Cofree f b) Source # itraversed :: IndexedTraversal [i] (Cofree f a) (Cofree f b) a b Source #
TraversableWithIndex i f => TraversableWithIndex [i] (Free f) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => ([i] -> a -> f0 b) -> Free f a -> f0 (Free f b) Source # itraversed :: IndexedTraversal [i] (Free f a) (Free f b) a b Source #
(TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex (Either i j) (f :+: g) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => (Either i j -> a -> f0 b) -> (f :+: g) a -> f0 ((f :+: g) b) Source # itraversed :: IndexedTraversal (Either i j) ((f :+: g) a) ((f :+: g) b) a b Source #
(TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex (Either i j) (f :*: g) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => (Either i j -> a -> f0 b) -> (f :*: g) a -> f0 ((f :*: g) b) Source # itraversed :: IndexedTraversal (Either i j) ((f :*: g) a) ((f :*: g) b) a b Source #
(TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex (Either i j) (Product f g) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => (Either i j -> a -> f0 b) -> Product f g a -> f0 (Product f g b) Source # itraversed :: IndexedTraversal (Either i j) (Product f g a) (Product f g b) a b Source #
(TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex (Either i j) (Sum f g) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => (Either i j -> a -> f0 b) -> Sum f g a -> f0 (Sum f g b) Source # itraversed :: IndexedTraversal (Either i j) (Sum f g a) (Sum f g b) a b Source #
(TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex (i, j) (f :.: g) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => ((i, j) -> a -> f0 b) -> (f :.: g) a -> f0 ((f :.: g) b) Source # itraversed :: IndexedTraversal (i, j) ((f :.: g) a) ((f :.: g) b) a b Source #
(TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex (i, j) (Compose f g) Source # |
Instance details Defined in Control.Lens.Indexed Methods itraverse :: Applicative f0 => ((i, j) -> a -> f0 b) -> Compose f g a -> f0 (Compose f g b) Source # itraversed :: IndexedTraversal (i, j) (Compose f g a) (Compose f g b) a b Source #

class Foldable f => FoldableWithIndex i f | f -> i where Source #

A container that supports folding with an additional index.

Minimal complete definition

Nothing

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> f a -> m Source #

Fold a container by mapping value to an arbitrary `Monoid` with access to the index `i`.

When you don't need access to the index then `foldMap` is more flexible in what it accepts.

    foldMap ≡ ifoldMap . const

default ifoldMap :: (TraversableWithIndex i f, Monoid m) => (i -> a -> m) -> f a -> m Source #

ifolded :: IndexedFold i (f a) a Source #

The `IndexedFold` of a `FoldableWithIndex` container.

``ifolded` `.` `asIndex`` is a fold over the keys of a `FoldableWithIndex`.

    >>> Data.Map.fromList [(2, "hello"), (1, "world")]^..ifolded.asIndex
    [1,2]

ifoldr :: (i -> a -> b -> b) -> b -> f a -> b Source #

Right-associative fold of an indexed container with access to the index `i`.

When you don't need access to the index then `foldr` is more flexible in what it accepts.

    foldr ≡ ifoldr . const

ifoldl :: (i -> b -> a -> b) -> b -> f a -> b Source #

Left-associative fold of an indexed container with access to the index `i`.

When you don't need access to the index then `foldl` is more flexible in what it accepts.

    foldl ≡ ifoldl . const

ifoldr' :: (i -> a -> b -> b) -> b -> f a -> b Source #

Strictly fold right over the elements of a structure with access to the index `i`.

When you don't need access to the index then `foldr'` is more flexible in what it accepts.

    foldr' ≡ ifoldr' . const

ifoldl' :: (i -> b -> a -> b) -> b -> f a -> b Source #

Fold over the elements of a structure with an index, associating to the left, but strictly.

When you don't need access to the index then `foldlOf'` is more flexible in what it accepts.

    foldlOf' l ≡ ifoldlOf' l . const

#### Instances

Instances details

FoldableWithIndex Int [] Source # |
Instance details Defined in Control.Lens.Indexed Methods ifoldMap :: Monoid m => (Int -> a -> m) -> [a] -> m Source # ifolded :: IndexedFold Int [a] a Source # ifoldr :: (Int -> a -> b -> b) -> b -> [a] -> b Source # ifoldl :: (Int -> b -> a -> b) -> b -> [a] -> b Source # ifoldr' :: (Int -> a -> b -> b) -> b -> [a] -> b Source # ifoldl' :: (Int -> b -> a -> b) -> b -> [a] -> b Source #
FoldableWithIndex Int NonEmpty Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> NonEmpty a -> m Source #

ifolded :: IndexedFold Int (NonEmpty a) a Source #

ifoldr :: (Int -> a -> b -> b) -> b -> NonEmpty a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> NonEmpty a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> NonEmpty a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> NonEmpty a -> b Source #

FoldableWithIndex Int ZipList Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> ZipList a -> m Source #

ifolded :: IndexedFold Int (ZipList a) a Source #

ifoldr :: (Int -> a -> b -> b) -> b -> ZipList a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> ZipList a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> ZipList a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> ZipList a -> b Source #

FoldableWithIndex Int IntMap Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> IntMap a -> m Source #

ifolded :: IndexedFold Int (IntMap a) a Source #

ifoldr :: (Int -> a -> b -> b) -> b -> IntMap a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> IntMap a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> IntMap a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> IntMap a -> b Source #

FoldableWithIndex Int Vector Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> Vector a -> m Source #

ifolded :: IndexedFold Int (Vector a) a Source #

ifoldr :: (Int -> a -> b -> b) -> b -> Vector a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> Vector a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> Vector a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> Vector a -> b Source #

FoldableWithIndex Int Seq Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> Seq a -> m Source #

ifolded :: IndexedFold Int (Seq a) a Source #

ifoldr :: (Int -> a -> b -> b) -> b -> Seq a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> Seq a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> Seq a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> Seq a -> b Source #

FoldableWithIndex Int Deque Source # |

Instance details

Defined in Control.Lens.Internal.Deque

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> Deque a -> m Source #

ifolded :: IndexedFold Int (Deque a) a Source #

ifoldr :: (Int -> a -> b -> b) -> b -> Deque a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> Deque a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> Deque a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> Deque a -> b Source #

FoldableWithIndex () Maybe Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (() -> a -> m) -> Maybe a -> m Source #

ifolded :: IndexedFold () (Maybe a) a Source #

ifoldr :: (() -> a -> b -> b) -> b -> Maybe a -> b Source #

ifoldl :: (() -> b -> a -> b) -> b -> Maybe a -> b Source #

ifoldr' :: (() -> a -> b -> b) -> b -> Maybe a -> b Source #

ifoldl' :: (() -> b -> a -> b) -> b -> Maybe a -> b Source #

FoldableWithIndex () Par1 Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (() -> a -> m) -> Par1 a -> m Source #

ifolded :: IndexedFold () (Par1 a) a Source #

ifoldr :: (() -> a -> b -> b) -> b -> Par1 a -> b Source #

ifoldl :: (() -> b -> a -> b) -> b -> Par1 a -> b Source #

ifoldr' :: (() -> a -> b -> b) -> b -> Par1 a -> b Source #

ifoldl' :: (() -> b -> a -> b) -> b -> Par1 a -> b Source #

FoldableWithIndex () Identity Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (() -> a -> m) -> Identity a -> m Source #

ifolded :: IndexedFold () (Identity a) a Source #

ifoldr :: (() -> a -> b -> b) -> b -> Identity a -> b Source #

ifoldl :: (() -> b -> a -> b) -> b -> Identity a -> b Source #

ifoldr' :: (() -> a -> b -> b) -> b -> Identity a -> b Source #

ifoldl' :: (() -> b -> a -> b) -> b -> Identity a -> b Source #

Ix i => FoldableWithIndex i (Array i) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Array i a -> m Source #

ifolded :: IndexedFold i (Array i a) a Source #

ifoldr :: (i -> a -> b -> b) -> b -> Array i a -> b Source #

ifoldl :: (i -> b -> a -> b) -> b -> Array i a -> b Source #

ifoldr' :: (i -> a -> b -> b) -> b -> Array i a -> b Source #

ifoldl' :: (i -> b -> a -> b) -> b -> Array i a -> b Source #

FoldableWithIndex i (Level i) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Level i a -> m Source #

ifolded :: IndexedFold i (Level i a) a Source #

ifoldr :: (i -> a -> b -> b) -> b -> Level i a -> b Source #

ifoldl :: (i -> b -> a -> b) -> b -> Level i a -> b Source #

ifoldr' :: (i -> a -> b -> b) -> b -> Level i a -> b Source #

ifoldl' :: (i -> b -> a -> b) -> b -> Level i a -> b Source #

FoldableWithIndex k (HashMap k) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (k -> a -> m) -> HashMap k a -> m Source #

ifolded :: IndexedFold k (HashMap k a) a Source #

ifoldr :: (k -> a -> b -> b) -> b -> HashMap k a -> b Source #

ifoldl :: (k -> b -> a -> b) -> b -> HashMap k a -> b Source #

ifoldr' :: (k -> a -> b -> b) -> b -> HashMap k a -> b Source #

ifoldl' :: (k -> b -> a -> b) -> b -> HashMap k a -> b Source #

FoldableWithIndex k (Map k) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (k -> a -> m) -> Map k a -> m Source #

ifolded :: IndexedFold k (Map k a) a Source #

ifoldr :: (k -> a -> b -> b) -> b -> Map k a -> b Source #

ifoldl :: (k -> b -> a -> b) -> b -> Map k a -> b Source #

ifoldr' :: (k -> a -> b -> b) -> b -> Map k a -> b Source #

ifoldl' :: (k -> b -> a -> b) -> b -> Map k a -> b Source #

FoldableWithIndex k ((,) k) Source # |
Instance details Defined in Control.Lens.Indexed Methods ifoldMap :: Monoid m => (k -> a -> m) -> (k, a) -> m Source # ifolded :: IndexedFold k (k, a) a Source # ifoldr :: (k -> a -> b -> b) -> b -> (k, a) -> b Source # ifoldl :: (k -> b -> a -> b) -> b -> (k, a) -> b Source # ifoldr' :: (k -> a -> b -> b) -> b -> (k, a) -> b Source # ifoldl' :: (k -> b -> a -> b) -> b -> (k, a) -> b Source #
FoldableWithIndex Void (V1 :: Type -> Type) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Void -> a -> m) -> V1 a -> m Source #

ifolded :: IndexedFold Void (V1 a) a Source #

ifoldr :: (Void -> a -> b -> b) -> b -> V1 a -> b Source #

ifoldl :: (Void -> b -> a -> b) -> b -> V1 a -> b Source #

ifoldr' :: (Void -> a -> b -> b) -> b -> V1 a -> b Source #

ifoldl' :: (Void -> b -> a -> b) -> b -> V1 a -> b Source #

FoldableWithIndex Void (U1 :: Type -> Type) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Void -> a -> m) -> U1 a -> m Source #

ifolded :: IndexedFold Void (U1 a) a Source #

ifoldr :: (Void -> a -> b -> b) -> b -> U1 a -> b Source #

ifoldl :: (Void -> b -> a -> b) -> b -> U1 a -> b Source #

ifoldr' :: (Void -> a -> b -> b) -> b -> U1 a -> b Source #

ifoldl' :: (Void -> b -> a -> b) -> b -> U1 a -> b Source #

FoldableWithIndex Void (Proxy :: Type -> Type) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Void -> a -> m) -> Proxy a -> m Source #

ifolded :: IndexedFold Void (Proxy a) a Source #

ifoldr :: (Void -> a -> b -> b) -> b -> Proxy a -> b Source #

ifoldl :: (Void -> b -> a -> b) -> b -> Proxy a -> b Source #

ifoldr' :: (Void -> a -> b -> b) -> b -> Proxy a -> b Source #

ifoldl' :: (Void -> b -> a -> b) -> b -> Proxy a -> b Source #

FoldableWithIndex () (Tagged a) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (() -> a0 -> m) -> Tagged a a0 -> m Source #

ifolded :: IndexedFold () (Tagged a a0) a0 Source #

ifoldr :: (() -> a0 -> b -> b) -> b -> Tagged a a0 -> b Source #

ifoldl :: (() -> b -> a0 -> b) -> b -> Tagged a a0 -> b Source #

ifoldr' :: (() -> a0 -> b -> b) -> b -> Tagged a a0 -> b Source #

ifoldl' :: (() -> b -> a0 -> b) -> b -> Tagged a a0 -> b Source #

FoldableWithIndex i f => FoldableWithIndex i (Rec1 f) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Rec1 f a -> m Source #

ifolded :: IndexedFold i (Rec1 f a) a Source #

ifoldr :: (i -> a -> b -> b) -> b -> Rec1 f a -> b Source #

ifoldl :: (i -> b -> a -> b) -> b -> Rec1 f a -> b Source #

ifoldr' :: (i -> a -> b -> b) -> b -> Rec1 f a -> b Source #

ifoldl' :: (i -> b -> a -> b) -> b -> Rec1 f a -> b Source #

FoldableWithIndex i m => FoldableWithIndex i (IdentityT m) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m0 => (i -> a -> m0) -> IdentityT m a -> m0 Source #

ifolded :: IndexedFold i (IdentityT m a) a Source #

ifoldr :: (i -> a -> b -> b) -> b -> IdentityT m a -> b Source #

ifoldl :: (i -> b -> a -> b) -> b -> IdentityT m a -> b Source #

ifoldr' :: (i -> a -> b -> b) -> b -> IdentityT m a -> b Source #

ifoldl' :: (i -> b -> a -> b) -> b -> IdentityT m a -> b Source #

FoldableWithIndex i f => FoldableWithIndex i (Reverse f) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Reverse f a -> m Source #

ifolded :: IndexedFold i (Reverse f a) a Source #

ifoldr :: (i -> a -> b -> b) -> b -> Reverse f a -> b Source #

ifoldl :: (i -> b -> a -> b) -> b -> Reverse f a -> b Source #

ifoldr' :: (i -> a -> b -> b) -> b -> Reverse f a -> b Source #

ifoldl' :: (i -> b -> a -> b) -> b -> Reverse f a -> b Source #

FoldableWithIndex i f => FoldableWithIndex i (Backwards f) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Backwards f a -> m Source #

ifolded :: IndexedFold i (Backwards f a) a Source #

ifoldr :: (i -> a -> b -> b) -> b -> Backwards f a -> b Source #

ifoldl :: (i -> b -> a -> b) -> b -> Backwards f a -> b Source #

ifoldr' :: (i -> a -> b -> b) -> b -> Backwards f a -> b Source #

ifoldl' :: (i -> b -> a -> b) -> b -> Backwards f a -> b Source #

FoldableWithIndex i (Magma i t b) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Magma i t b a -> m Source #

ifolded :: IndexedFold i (Magma i t b a) a Source #

ifoldr :: (i -> a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source #

ifoldl :: (i -> b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source #

ifoldr' :: (i -> a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source #

ifoldl' :: (i -> b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source #

FoldableWithIndex Void (K1 i c :: Type -> Type) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Void -> a -> m) -> K1 i c a -> m Source #

ifolded :: IndexedFold Void (K1 i c a) a Source #

ifoldr :: (Void -> a -> b -> b) -> b -> K1 i c a -> b Source #

ifoldl :: (Void -> b -> a -> b) -> b -> K1 i c a -> b Source #

ifoldr' :: (Void -> a -> b -> b) -> b -> K1 i c a -> b Source #

ifoldl' :: (Void -> b -> a -> b) -> b -> K1 i c a -> b Source #

FoldableWithIndex [Int] Tree Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => ([Int] -> a -> m) -> Tree a -> m Source #

ifolded :: IndexedFold [Int] (Tree a) a Source #

ifoldr :: ([Int] -> a -> b -> b) -> b -> Tree a -> b Source #

ifoldl :: ([Int] -> b -> a -> b) -> b -> Tree a -> b Source #

ifoldr' :: ([Int] -> a -> b -> b) -> b -> Tree a -> b Source #

ifoldl' :: ([Int] -> b -> a -> b) -> b -> Tree a -> b Source #

FoldableWithIndex i f => FoldableWithIndex [i] (Cofree f) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => ([i] -> a -> m) -> Cofree f a -> m Source #

ifolded :: IndexedFold [i] (Cofree f a) a Source #

ifoldr :: ([i] -> a -> b -> b) -> b -> Cofree f a -> b Source #

ifoldl :: ([i] -> b -> a -> b) -> b -> Cofree f a -> b Source #

ifoldr' :: ([i] -> a -> b -> b) -> b -> Cofree f a -> b Source #

ifoldl' :: ([i] -> b -> a -> b) -> b -> Cofree f a -> b Source #

FoldableWithIndex i f => FoldableWithIndex [i] (Free f) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => ([i] -> a -> m) -> Free f a -> m Source #

ifolded :: IndexedFold [i] (Free f a) a Source #

ifoldr :: ([i] -> a -> b -> b) -> b -> Free f a -> b Source #

ifoldl :: ([i] -> b -> a -> b) -> b -> Free f a -> b Source #

ifoldr' :: ([i] -> a -> b -> b) -> b -> Free f a -> b Source #

ifoldl' :: ([i] -> b -> a -> b) -> b -> Free f a -> b Source #

(FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex (Either i j) (f :+: g) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Either i j -> a -> m) -> (f :+: g) a -> m Source #

ifolded :: IndexedFold (Either i j) ((f :+: g) a) a Source #

ifoldr :: (Either i j -> a -> b -> b) -> b -> (f :+: g) a -> b Source #

ifoldl :: (Either i j -> b -> a -> b) -> b -> (f :+: g) a -> b Source #

ifoldr' :: (Either i j -> a -> b -> b) -> b -> (f :+: g) a -> b Source #

ifoldl' :: (Either i j -> b -> a -> b) -> b -> (f :+: g) a -> b Source #

(FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex (Either i j) (f :*: g) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Either i j -> a -> m) -> (f :*: g) a -> m Source #

ifolded :: IndexedFold (Either i j) ((f :*: g) a) a Source #

ifoldr :: (Either i j -> a -> b -> b) -> b -> (f :*: g) a -> b Source #

ifoldl :: (Either i j -> b -> a -> b) -> b -> (f :*: g) a -> b Source #

ifoldr' :: (Either i j -> a -> b -> b) -> b -> (f :*: g) a -> b Source #

ifoldl' :: (Either i j -> b -> a -> b) -> b -> (f :*: g) a -> b Source #

(FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex (Either i j) (Product f g) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Either i j -> a -> m) -> Product f g a -> m Source #

ifolded :: IndexedFold (Either i j) (Product f g a) a Source #

ifoldr :: (Either i j -> a -> b -> b) -> b -> Product f g a -> b Source #

ifoldl :: (Either i j -> b -> a -> b) -> b -> Product f g a -> b Source #

ifoldr' :: (Either i j -> a -> b -> b) -> b -> Product f g a -> b Source #

ifoldl' :: (Either i j -> b -> a -> b) -> b -> Product f g a -> b Source #

(FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex (Either i j) (Sum f g) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => (Either i j -> a -> m) -> Sum f g a -> m Source #

ifolded :: IndexedFold (Either i j) (Sum f g a) a Source #

ifoldr :: (Either i j -> a -> b -> b) -> b -> Sum f g a -> b Source #

ifoldl :: (Either i j -> b -> a -> b) -> b -> Sum f g a -> b Source #

ifoldr' :: (Either i j -> a -> b -> b) -> b -> Sum f g a -> b Source #

ifoldl' :: (Either i j -> b -> a -> b) -> b -> Sum f g a -> b Source #

(FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex (i, j) (f :.: g) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => ((i, j) -> a -> m) -> (f :.: g) a -> m Source #

ifolded :: IndexedFold (i, j) ((f :.: g) a) a Source #

ifoldr :: ((i, j) -> a -> b -> b) -> b -> (f :.: g) a -> b Source #

ifoldl :: ((i, j) -> b -> a -> b) -> b -> (f :.: g) a -> b Source #

ifoldr' :: ((i, j) -> a -> b -> b) -> b -> (f :.: g) a -> b Source #

ifoldl' :: ((i, j) -> b -> a -> b) -> b -> (f :.: g) a -> b Source #

(FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex (i, j) (Compose f g) Source # |

Instance details

Defined in Control.Lens.Indexed

Methods

ifoldMap :: Monoid m => ((i, j) -> a -> m) -> Compose f g a -> m Source #

ifolded :: IndexedFold (i, j) (Compose f g a) a Source #

ifoldr :: ((i, j) -> a -> b -> b) -> b -> Compose f g a -> b Source #

ifoldl :: ((i, j) -> b -> a -> b) -> b -> Compose f g a -> b Source #

ifoldr' :: ((i, j) -> a -> b -> b) -> b -> Compose f g a -> b Source #

ifoldl' :: ((i, j) -> b -> a -> b) -> b -> Compose f g a -> b Source #

class Functor f => FunctorWithIndex i f | f -> i where Source #

A `Functor` with an additional index.

Instances must satisfy a modified form of the `Functor` laws:

    imap f . imap g ≡ imap (\i -> f i . g i)
    imap (\_ a -> a) ≡ id

Minimal complete definition

Nothing

Methods

imap :: (i -> a -> b) -> f a -> f b Source #

Map with access to the index.

default imap :: TraversableWithIndex i f => (i -> a -> b) -> f a -> f b Source #

imapped :: IndexedSetter i (f a) (f b) a b Source #

The `IndexedSetter` for a `FunctorWithIndex`.

If you don't need access to the index, then `mapped` is more flexible in what it accepts.

#### Instances

Instances details

FunctorWithIndex Int [] Source # | The position in the list is available as the index.
Instance details Defined in Control.Lens.Indexed Methods imap :: (Int -> a -> b) -> [a] -> [b] Source # imapped :: IndexedSetter Int [a] [b] a b Source #
FunctorWithIndex Int NonEmpty Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Int -> a -> b) -> NonEmpty a -> NonEmpty b Source # imapped :: IndexedSetter Int (NonEmpty a) (NonEmpty b) a b Source #
FunctorWithIndex Int ZipList Source # | Same instance as for `[]`.
Instance details Defined in Control.Lens.Indexed Methods imap :: (Int -> a -> b) -> ZipList a -> ZipList b Source # imapped :: IndexedSetter Int (ZipList a) (ZipList b) a b Source #
FunctorWithIndex Int IntMap Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Int -> a -> b) -> IntMap a -> IntMap b Source # imapped :: IndexedSetter Int (IntMap a) (IntMap b) a b Source #
FunctorWithIndex Int Vector Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Int -> a -> b) -> Vector a -> Vector b Source # imapped :: IndexedSetter Int (Vector a) (Vector b) a b Source #
FunctorWithIndex Int Seq Source # | The position in the `Seq` is available as the index.
Instance details Defined in Control.Lens.Indexed Methods imap :: (Int -> a -> b) -> Seq a -> Seq b Source # imapped :: IndexedSetter Int (Seq a) (Seq b) a b Source #
FunctorWithIndex Int Deque Source # |
Instance details Defined in Control.Lens.Internal.Deque Methods imap :: (Int -> a -> b) -> Deque a -> Deque b Source # imapped :: IndexedSetter Int (Deque a) (Deque b) a b Source #
FunctorWithIndex () Maybe Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (() -> a -> b) -> Maybe a -> Maybe b Source # imapped :: IndexedSetter () (Maybe a) (Maybe b) a b Source #
FunctorWithIndex () Par1 Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (() -> a -> b) -> Par1 a -> Par1 b Source # imapped :: IndexedSetter () (Par1 a) (Par1 b) a b Source #
FunctorWithIndex () Identity Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (() -> a -> b) -> Identity a -> Identity b Source # imapped :: IndexedSetter () (Identity a) (Identity b) a b Source #
Ix i => FunctorWithIndex i (Array i) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b) -> Array i a -> Array i b Source # imapped :: IndexedSetter i (Array i a) (Array i b) a b Source #
FunctorWithIndex i (Level i) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b) -> Level i a -> Level i b Source # imapped :: IndexedSetter i (Level i a) (Level i b) a b Source #
FunctorWithIndex k (HashMap k) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (k -> a -> b) -> HashMap k a -> HashMap k b Source # imapped :: IndexedSetter k (HashMap k a) (HashMap k b) a b Source #
FunctorWithIndex k (Map k) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (k -> a -> b) -> Map k a -> Map k b Source # imapped :: IndexedSetter k (Map k a) (Map k b) a b Source #
FunctorWithIndex k ((,) k) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (k -> a -> b) -> (k, a) -> (k, b) Source # imapped :: IndexedSetter k (k, a) (k, b) a b Source #
FunctorWithIndex Void (V1 :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Void -> a -> b) -> V1 a -> V1 b Source # imapped :: IndexedSetter Void (V1 a) (V1 b) a b Source #
FunctorWithIndex Void (U1 :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Void -> a -> b) -> U1 a -> U1 b Source # imapped :: IndexedSetter Void (U1 a) (U1 b) a b Source #
FunctorWithIndex Void (Proxy :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Void -> a -> b) -> Proxy a -> Proxy b Source # imapped :: IndexedSetter Void (Proxy a) (Proxy b) a b Source #
FunctorWithIndex () (Tagged a) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (() -> a0 -> b) -> Tagged a a0 -> Tagged a b Source # imapped :: IndexedSetter () (Tagged a a0) (Tagged a b) a0 b Source #
FunctorWithIndex i f => FunctorWithIndex i (Rec1 f) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b) -> Rec1 f a -> Rec1 f b Source # imapped :: IndexedSetter i (Rec1 f a) (Rec1 f b) a b Source #
FunctorWithIndex i m => FunctorWithIndex i (IdentityT m) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b) -> IdentityT m a -> IdentityT m b Source # imapped :: IndexedSetter i (IdentityT m a) (IdentityT m b) a b Source #
FunctorWithIndex i f => FunctorWithIndex i (Reverse f) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b) -> Reverse f a -> Reverse f b Source # imapped :: IndexedSetter i (Reverse f a) (Reverse f b) a b Source #
FunctorWithIndex i f => FunctorWithIndex i (Backwards f) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b) -> Backwards f a -> Backwards f b Source # imapped :: IndexedSetter i (Backwards f a) (Backwards f b) a b Source #
FunctorWithIndex i (Magma i t b) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (i -> a -> b0) -> Magma i t b a -> Magma i t b b0 Source # imapped :: IndexedSetter i (Magma i t b a) (Magma i t b b0) a b0 Source #
FunctorWithIndex r ((->) r :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (r -> a -> b) -> (r -> a) -> r -> b Source # imapped :: IndexedSetter r (r -> a) (r -> b) a b Source #
FunctorWithIndex Void (K1 i c :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Void -> a -> b) -> K1 i c a -> K1 i c b Source # imapped :: IndexedSetter Void (K1 i c a) (K1 i c b) a b Source #
FunctorWithIndex [Int] Tree Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: ([Int] -> a -> b) -> Tree a -> Tree b Source # imapped :: IndexedSetter [Int] (Tree a) (Tree b) a b Source #
FunctorWithIndex i f => FunctorWithIndex [i] (Cofree f) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: ([i] -> a -> b) -> Cofree f a -> Cofree f b Source # imapped :: IndexedSetter [i] (Cofree f a) (Cofree f b) a b Source #
FunctorWithIndex i f => FunctorWithIndex [i] (Free f) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: ([i] -> a -> b) -> Free f a -> Free f b Source # imapped :: IndexedSetter [i] (Free f a) (Free f b) a b Source #
FunctorWithIndex i w => FunctorWithIndex (s, i) (TracedT s w) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: ((s, i) -> a -> b) -> TracedT s w a -> TracedT s w b Source # imapped :: IndexedSetter (s, i) (TracedT s w a) (TracedT s w b) a b Source #
FunctorWithIndex i m => FunctorWithIndex (e, i) (ReaderT e m) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: ((e, i) -> a -> b) -> ReaderT e m a -> ReaderT e m b Source # imapped :: IndexedSetter (e, i) (ReaderT e m a) (ReaderT e m b) a b Source #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (f :+: g) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Either i j -> a -> b) -> (f :+: g) a -> (f :+: g) b Source # imapped :: IndexedSetter (Either i j) ((f :+: g) a) ((f :+: g) b) a b Source #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (f :*: g) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Either i j -> a -> b) -> (f :*: g) a -> (f :*: g) b Source # imapped :: IndexedSetter (Either i j) ((f :*: g) a) ((f :*: g) b) a b Source #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (Product f g) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Either i j -> a -> b) -> Product f g a -> Product f g b Source # imapped :: IndexedSetter (Either i j) (Product f g a) (Product f g b) a b Source #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (Sum f g) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: (Either i j -> a -> b) -> Sum f g a -> Sum f g b Source # imapped :: IndexedSetter (Either i j) (Sum f g a) (Sum f g b) a b Source #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (i, j) (f :.: g) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: ((i, j) -> a -> b) -> (f :.: g) a -> (f :.: g) b Source # imapped :: IndexedSetter (i, j) ((f :.: g) a) ((f :.: g) b) a b Source #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (i, j) (Compose f g) Source # |
Instance details Defined in Control.Lens.Indexed Methods imap :: ((i, j) -> a -> b) -> Compose f g a -> Compose f g b Source # imapped :: IndexedSetter (i, j) (Compose f g a) (Compose f g b) a b Source #

selfIndex :: Indexable a p => p a fb -> a -> fb Source #

Use a value itself as its own index. This is essentially an indexed version of `id`.

Note: When used to modify the value, this can break the index requirements assumed by `indices` and similar, so this is only properly an `IndexedGetter`, but it can be used as more.

    selfIndex :: IndexedGetter a a b

reindexed :: Indexable j p => (i -> j) -> (Indexed i a b -> r) -> p a b -> r Source #

Remap the index.

icompose :: Indexable p c => (i -> j -> p) -> (Indexed i s t -> r) -> (Indexed j a b -> s -> t) -> c a b -> r Source #

Composition of `Indexed` functions with a user supplied function for combining indices.

indices :: (Indexable i p, Applicative f) => (i -> Bool) -> Optical' p (Indexed i) f a a Source #

This allows you to filter an `IndexedFold`, `IndexedGetter`, `IndexedTraversal` or `IndexedLens` based on a predicate on the indices.

    >>> ["hello","the","world","!!!"]^..traversed.indices even
    ["hello","world"]

    >>> over (traversed.indices (>0)) Prelude.reverse $ ["He","was","stressed","o_O"]
    ["He","saw","desserts","O_o"]

index :: (Indexable i p, Eq i, Applicative f) => i -> Optical' p (Indexed i) f a a Source #

This allows you to filter an `IndexedFold`, `IndexedGetter`, `IndexedTraversal` or `IndexedLens` based on an index.

    >>> ["hello","the","world","!!!"]^?traversed.index 2
    Just "world"

iany :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool Source #

Return whether or not any element in a container satisfies a predicate, with access to the index `i`.

When you don't need access to the index then `any` is more flexible in what it accepts.

    any ≡ iany . const

iall :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool Source #

Return whether or not all elements in a container satisfy a predicate, with access to the index `i`.

When you don't need access to the index then `all` is more flexible in what it accepts.

    all ≡ iall . const

inone :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool Source #

Return whether or not none of the elements in a container satisfy a predicate, with access to the index `i`.

When you don't need access to the index then `none` is more flexible in what it accepts.

    none ≡ inone . const
    inone f ≡ not . iany f

none :: Foldable f => (a -> Bool) -> f a -> Bool Source #

Determines whether no elements of the structure satisfy the predicate.

    none f ≡ not . any f

itraverse_ :: (FoldableWithIndex i t, Applicative f) => (i -> a -> f b) -> t a -> f () Source #

Traverse elements with access to the index `i`, discarding the results.

When you don't need access to the index then `traverse_` is more flexible in what it accepts.

    traverse_ l = itraverse . const

ifor_ :: (FoldableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f () Source #

Traverse elements with access to the index `i`, discarding the results (with the arguments flipped).

    ifor_ ≡ flip itraverse_

When you don't need access to the index then `for_` is more flexible in what it accepts.

    for_ a ≡ ifor_ a . const

imapM_ :: (FoldableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m () Source #

Run monadic actions for each target of an `IndexedFold` or `IndexedTraversal` with access to the index, discarding the results.

When you don't need access to the index then `mapMOf_` is more flexible in what it accepts.

    mapM_ ≡ imapM . const

iforM_ :: (FoldableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m () Source #

Run monadic actions for each target of an `IndexedFold` or `IndexedTraversal` with access to the index, discarding the results (with the arguments flipped).

    iforM_ ≡ flip imapM_

When you don't need access to the index then `forMOf_` is more flexible in what it accepts.

    forMOf_ l a ≡ iforMOf l a . const

iconcatMap :: FoldableWithIndex i f => (i -> a -> [b]) -> f a -> [b] Source #

Concatenate the results of a function of the elements of an indexed container with access to the index.

When you don't need access to the index then `concatMap` is more flexible in what it accepts.

    concatMap ≡ iconcatMap . const
    iconcatMap ≡ ifoldMap

ifind :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Maybe (i, a) Source #

Searches a container with a predicate that is also supplied the index, returning the left-most element of the structure matching the predicate, or `Nothing` if there is no such element.

When you don't need access to the index then `find` is more flexible in what it accepts.

    find ≡ ifind . const

ifoldrM :: (FoldableWithIndex i f, Monad m) => (i -> a -> b -> m b) -> b -> f a -> m b Source #

Monadic fold right over the elements of a structure with an index.

When you don't need access to the index then `foldrM` is more flexible in what it accepts.

    foldrM ≡ ifoldrM . const

ifoldlM :: (FoldableWithIndex i f, Monad m) => (i -> b -> a -> m b) -> b -> f a -> m b Source #

Monadic fold over the elements of a structure with an index, associating to the left.

When you don't need access to the index then `foldlM` is more flexible in what it accepts.

    foldlM ≡ ifoldlM . const

itoList :: FoldableWithIndex i f => f a -> [(i, a)] Source #

Extract the key-value pairs from a structure.

When you don't need access to the indices in the result, then `toList` is more flexible in what it accepts.

    toList ≡ map snd . itoList

ifor :: (TraversableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f (t b) Source #

Traverse with an index (and the arguments flipped).

    for a ≡ ifor a . const
    ifor ≡ flip itraverse

imapM :: (TraversableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m (t b) Source #

Map each element of a structure to a monadic action, evaluate these actions from left to right, and collect the results, with access the index.

When you don't need access to the index `mapM` is more liberal in what it can accept.

    mapM ≡ imapM . const

iforM :: (TraversableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m (t b) Source #

Map each element of a structure to a monadic action, evaluate these actions from left to right, and collect the results, with access its position (and the arguments flipped).

    forM a ≡ iforM a . const
    iforM ≡ flip imapM

imapAccumR :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b) Source #

Generalizes `mapAccumR` to add access to the index.

`imapAccumROf` accumulates state from right to left.

    mapAccumR ≡ imapAccumR . const

imapAccumL :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b) Source #

Generalizes `mapAccumL` to add access to the index.

`imapAccumLOf` accumulates state from left to right.

    mapAccumLOf ≡ imapAccumL . const

ifoldMapBy :: FoldableWithIndex i t => (r -> r -> r) -> r -> (i -> a -> r) -> t a -> r Source #

ifoldMapByOf :: IndexedFold i t a -> (r -> r -> r) -> r -> (i -> a -> r) -> t -> r Source #

itraverseBy :: TraversableWithIndex i t => (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (i -> a -> f b) -> t a -> f (t b) Source #

itraverseByOf :: IndexedTraversal i s t a b -> (forall x. x -> f x) -> (forall x y. f (x -> y) -> f x -> f y) -> (i -> a -> f b) -> s -> f t Source #

type AnEquality' s a = AnEquality s s a a Source #

A `Simple` `AnEquality`.

type AnEquality (s :: k1) (t :: k2) (a :: k1) (b :: k2) = Identical a (Proxy b) a (Proxy b) -> Identical a (Proxy b) s (Proxy t) Source #

When you see this as an argument to a function, it expects an `Equality`.

data Identical a b s t where Source #

Provides witness that `(s ~ a, b ~ t)` holds.

Constructors

Identical :: Identical a b a b |

runEq :: AnEquality s t a b -> Identical s t a b Source #

Extract a witness of type `Equality`.

substEq :: forall s t a b rep (r :: TYPE rep). AnEquality s t a b -> ((s ~ a, t ~ b) => r) -> r Source #

Substituting types with `Equality`.

mapEq :: forall k1 k2 (s :: k1) (t :: k2) (a :: k1) (b :: k2) (f :: k1 -> Type). AnEquality s t a b -> f s -> f a Source #

We can use `Equality` to do substitution into anything.

fromEq :: AnEquality s t a b -> Equality b a t s Source #

`Equality` is symmetric.

simply :: forall p f s a rep (r :: TYPE rep). (Optic' p f s a -> r) -> Optic' p f s a -> r Source #

This is an adverb that can be used to modify many other `Lens` combinators to make them require simple lenses, simple traversals, simple prisms or simple isos as input.

simple :: Equality' a a Source #

Composition with this isomorphism is occasionally useful when your `Lens`, `Traversal` or `Iso` has a constraint on an unused argument to force that argument to agree with the type of a used argument and avoid `ScopedTypeVariables` or other ugliness.

cloneEquality :: AnEquality s t a b -> Equality s t a b Source #

equality :: (s :~: a) -> (b :~: t) -> Equality s t a b Source #

Construct an `Equality` from explicit equality evidence.

equality' :: (a :~: b) -> Equality' a b Source #

A `Simple` version of `equality`

overEquality :: AnEquality s t a b -> p a b -> p s t Source #

Recover a "profunctor lens" form of equality. Reverses `fromLeibniz`.

underEquality :: AnEquality s t a b -> p t s -> p b a Source #

The opposite of working `overEquality` is working `underEquality`.

fromLeibniz :: (Identical a b a b -> Identical a b s t) -> Equality s t a b Source #

Convert a "profunctor lens" form of equality to an equality. Reverses `overEquality`.

The type should be understood as

    fromLeibniz :: (forall p. p a b -> p s t) -> Equality s t a b

fromLeibniz' :: ((s :~: s) -> s :~: a) -> Equality' s a Source #

Convert Leibniz equality to equality. Reverses `mapEq` in `Simple` cases.

The type should be understood as

    fromLeibniz' :: (forall f. f s -> f a) -> Equality' s a

withEquality :: forall s t a b rep (r :: TYPE rep). AnEquality s t a b -> ((s :~: a) -> (b :~: t) -> r) -> r Source #

A version of `substEq` that provides explicit, rather than implicit, equality evidence.

class Strict lazy strict | lazy -> strict, strict -> lazy where Source #

Ad hoc conversion between "strict" and "lazy" versions of a structure, such as `Text` or `ByteString`.

Methods

strict :: Iso' lazy strict Source #

#### Instances

Instances details

Strict Text Text Source # |
Instance details Defined in Control.Lens.Iso Methods strict :: Iso' Text0 Text Source #
Strict ByteString ByteString Source # |
Instance details Defined in Control.Lens.Iso Methods strict :: Iso' ByteString ByteString0 Source #
Strict (ST s a) (ST s a) Source # |
Instance details Defined in Control.Lens.Iso Methods strict :: Iso' (ST s a) (ST0 s a) Source #
Strict (StateT s m a) (StateT s m a) Source # |
Instance details Defined in Control.Lens.Iso Methods strict :: Iso' (StateT0 s m a) (StateT s m a) Source #
Strict (WriterT w m a) (WriterT w m a) Source # |
Instance details Defined in Control.Lens.Iso Methods strict :: Iso' (WriterT0 w m a) (WriterT w m a) Source #
Strict (RWST r w s m a) (RWST r w s m a) Source # |
Instance details Defined in Control.Lens.Iso Methods strict :: Iso' (RWST0 r w s m a) (RWST r w s m a) Source #

class Bifunctor p => Swapped p where Source #

This class provides for symmetric bifunctors.

Methods

swapped :: Iso (p a b) (p c d) (p b a) (p d c) Source #

    swapped . swapped ≡ id
    first f . swapped = swapped . second f
    second g . swapped = swapped . first g
    bimap f g . swapped = swapped . bimap g f

    >>> (1,2)^.swapped
    (2,1)

#### Instances

Instances details

Swapped Either Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (Either a b) (Either c d) (Either b a) (Either d c) Source #
Swapped (,) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (a, b) (c, d) (b, a) (d, c) Source #
Swapped ((,,) x) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (x, a, b) (x, c, d) (x, b, a) (x, d, c) Source #
Swapped ((,,,) x y) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (x, y, a, b) (x, y, c, d) (x, y, b, a) (x, y, d, c) Source #
Swapped ((,,,,) x y z) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (x, y, z, a, b) (x, y, z, c, d) (x, y, z, b, a) (x, y, z, d, c) Source #
Swapped p => Swapped (Flip p) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (Flip p a b) (Flip p c d) (Flip p b a) (Flip p d c) Source #
Swapped ((,,,,,) x y z w) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (x, y, z, w, a, b) (x, y, z, w, c, d) (x, y, z, w, b, a) (x, y, z, w, d, c) Source #
(Swapped p, Swapped q) => Swapped (Sum p q) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (Sum p q a b) (Sum p q c d) (Sum p q b a) (Sum p q d c) Source #
(Swapped f, Swapped g) => Swapped (Product f g) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (Product f g a b) (Product f g c d) (Product f g b a) (Product f g d c) Source #
Swapped ((,,,,,,) x y z w v) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (x, y, z, w, v, a, b) (x, y, z, w, v, c, d) (x, y, z, w, v, b, a) (x, y, z, w, v, d, c) Source #
(Functor f, Swapped p) => Swapped (Tannen f p) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (Tannen f p a b) (Tannen f p c d) (Tannen f p b a) (Tannen f p d c) Source #
(f ~ g, Functor f, Swapped p) => Swapped (Biff p f g) Source # |
Instance details Defined in Control.Lens.Iso Methods swapped :: Iso (Biff p f g a b) (Biff p f g c d) (Biff p f g b a) (Biff p f g d c) Source #

type AnIso' s a = AnIso s s a a Source #

A `Simple` `AnIso`.

type AnIso s t a b = Exchange a b a (Identity b) -> Exchange a b s (Identity t) Source #

When you see this as an argument to a function, it expects an `Iso`.

pattern List :: IsList l => [Item l] -> l Source #

pattern Reversed :: Reversing t => t -> t Source #

pattern Swapped :: forall p c d. Swapped p => p d c -> p c d Source #

pattern Lazy :: Strict t s => t -> s Source #

pattern Strict :: Strict s t => t -> s Source #

iso :: (s -> a) -> (b -> t) -> Iso s t a b Source #

Build a simple isomorphism from a pair of inverse functions.

    view (iso f g) ≡ f
    view (from (iso f g)) ≡ g
    over (iso f g) h ≡ g . h . f
    over (from (iso f g)) h ≡ f . h . g

from :: AnIso s t a b -> Iso b a t s Source #

Invert an isomorphism.

    from (from l) ≡ l

withIso :: forall s t a b rep (r :: TYPE rep). AnIso s t a b -> ((s -> a) -> (b -> t) -> r) -> r Source #

Extract the two functions, one from `s -> a` and one from `b -> t` that characterize an `Iso`.

cloneIso :: AnIso s t a b -> Iso s t a b Source #

Convert from `AnIso` back to any `Iso`.

This is useful when you need to store an isomorphism as a data type inside a container and later reconstitute it as an overloaded function.

See `cloneLens` or `cloneTraversal` for more information on why you might want to do this.

au :: Functor f => AnIso s t a b -> ((b -> t) -> f s) -> f a Source #

Based on `ala` from Conor McBride's work on Epigram.

This version is generalized to accept any `Iso`, not just a `newtype`.

    >>> au (_Wrapping Sum) foldMap [1,2,3,4]
    10

You may want to think of this combinator as having the following, simpler type:

    au :: AnIso s t a b -> ((b -> t) -> e -> s) -> e -> a

    au = xplat . from

auf :: (Functor f, Functor g) => AnIso s t a b -> (f t -> g s) -> f b -> g a Source #

Based on `ala'` from Conor McBride's work on Epigram.

This version is generalized to accept any `Iso`, not just a `newtype`.

For a version you pass the name of the `newtype` constructor to, see `alaf`.

    >>> auf (_Wrapping Sum) (foldMapOf both) Prelude.length ("hello","world")
    10

Mnemonically, the German auf plays a similar role to à la, and the combinator is `au` with an extra function argument:

    auf :: Iso s t a b -> ((r -> t) -> e -> s) -> (r -> b) -> e -> a

but the signature is general.

Note: The direction of the `Iso` required for this function changed in `lens` 4.18 to match up with the behavior of `au`. For the old behavior use `xplatf` or for a version that is compatible across both old and new versions of `lens` you can just use `coerce`!

xplat :: Optic (Costar ((->) s)) g s t a b -> ((s -> a) -> g b) -> g t Source #

``xplat` = `au` . `from`` but with a nicer signature.

xplatf :: Optic (Costar f) g s t a b -> (f a -> g b) -> f s -> g t Source #

``xplatf` = `auf` . `from`` but with a nicer signature.

    >>> xplatf (_Unwrapping Sum) (foldMapOf both) Prelude.length ("hello","world")
    10

    xplatf :: Iso s t a b -> ((r -> a) -> e -> b) -> (r -> s) -> e -> t

under :: AnIso s t a b -> (t -> s) -> b -> a Source #

The opposite of working `over` a `Setter` is working `under` an isomorphism.

    under ≡ over . from

    under :: Iso s t a b -> (t -> s) -> b -> a

enum :: Enum a => Iso' Int a Source #

This isomorphism can be used to convert to or from an instance of `Enum`.

    >>> LT^.from enum
    0

    >>> 97^.enum :: Char
    'a'

Note: this is only an isomorphism from the numeric range actually used and it is a bit of a pleasant fiction, since there are questionable `Enum` instances for `Double`, and `Float` that exist solely for `[1.0 .. 4.0]` sugar and the instances for those and `Integer` don't cover all values in their range.

mapping :: (Functor f, Functor g) => AnIso s t a b -> Iso (f s) (g t) (f a) (g b) Source #

This can be used to lift any `Iso` into an arbitrary `Functor`.

non :: Eq a => a -> Iso' (Maybe a) a Source #

If `v` is an element of a type `a`, and `a'` is `a` sans the element `v`, then ``non` v` is an isomorphism from ``Maybe` a'` to `a`.

    non ≡ non' . only

Keep in mind this is only a real isomorphism if you treat the domain as being ``Maybe` (a sans v)`.

This is practically quite useful when you want to have a `Map` where all the entries should have non-zero values.

    >>> Map.fromList [("hello",1)] & at "hello" . non 0 +~ 2
    fromList [("hello",3)]

    >>> Map.fromList [("hello",1)] & at "hello" . non 0 -~ 1
    fromList []

    >>> Map.fromList [("hello",1)] ^. at "hello" . non 0
    1

    >>> Map.fromList [] ^. at "hello" . non 0
    0

This combinator is also particularly useful when working with nested maps.

e.g. When you want to create the nested `Map` when it is missing:

    >>> Map.empty & at "hello" . non Map.empty . at "world" ?~ "!!!"
    fromList [("hello",fromList [("world","!!!")])]

and when have deleting the last entry from the nested `Map` mean that we should delete its entry from the surrounding one:

    >>> fromList [("hello",fromList [("world","!!!")])] & at "hello" . non Map.empty . at "world" .~ Nothing
    fromList []

It can also be used in reverse to exclude a given value:

    >>> non 0 # rem 10 4
    Just 2

    >>> non 0 # rem 10 5
    Nothing

non' :: APrism' a () -> Iso' (Maybe a) a Source #

``non'` p` generalizes ``non` (p # ())` to take any unit `Prism`

This function generates an isomorphism between ``Maybe` (a | `isn't` p a)` and `a`.

    >>> Map.singleton "hello" Map.empty & at "hello" . non' _Empty . at "world" ?~ "!!!"
    fromList [("hello",fromList [("world","!!!")])]

    >>> fromList [("hello",fromList [("world","!!!")])] & at "hello" . non' _Empty . at "world" .~ Nothing
    fromList []

anon :: a -> (a -> Bool) -> Iso' (Maybe a) a Source #

``anon` a p` generalizes ``non` a` to take any value and a predicate.

This function assumes that `p a` holds ``True`` and generates an isomorphism between ``Maybe` (a | `not` (p a))` and `a`.

    >>> Map.empty & at "hello" . anon Map.empty Map.null . at "world" ?~ "!!!"
    fromList [("hello",fromList [("world","!!!")])]

    >>> fromList [("hello",fromList [("world","!!!")])] & at "hello" . anon Map.empty Map.null . at "world" .~ Nothing
    fromList []

curried :: Iso ((a, b) -> c) ((d, e) -> f) (a -> b -> c) (d -> e -> f) Source #

The canonical isomorphism for currying and uncurrying a function.

    curried = iso curry uncurry

    >>> (fst^.curried) 3 4
    3

    >>> view curried fst 3 4
    3

uncurried :: Iso (a -> b -> c) (d -> e -> f) ((a, b) -> c) ((d, e) -> f) Source #

The canonical isomorphism for uncurrying and currying a function.

    uncurried = iso uncurry curry

    uncurried = from curried

    >>> ((+)^.uncurried) (1,2)
    3

flipped :: Iso (a -> b -> c) (a' -> b' -> c') (b -> a -> c) (b' -> a' -> c') Source #

The isomorphism for flipping a function.

    >>> ((,)^.flipped) 1 2
    (2,1)

lazy :: Strict lazy strict => Iso' strict lazy Source #

An `Iso` between the strict variant of a structure and its lazy counterpart.

    lazy = from strict

See http://hackage.haskell.org/package/strict-base-types for an example use.

reversed :: Reversing a => Iso' a a Source #

An `Iso` between a list, `ByteString`, `Text` fragment, etc. and its reversal.

    >>> "live" ^. reversed
    "evil"

    >>> "live" & reversed %~ ('d':)
    "lived"

involuted :: (a -> a) -> Iso' a a Source #

Given a function that is its own inverse, this gives you an `Iso` using it in both directions.

    involuted ≡ join iso

    >>> "live" ^. involuted reverse
    "evil"

    >>> "live" & involuted reverse %~ ('d':)
    "lived"

magma :: LensLike (Mafic a b) s t a b -> Iso s u (Magma Int t b a) (Magma j u c c) Source #

This isomorphism can be used to inspect a `Traversal` to see how it associates the structure and it can also be used to bake the `Traversal` into a `Magma` so that you can traverse over it multiple times.

imagma :: Over (Indexed i) (Molten i a b) s t a b -> Iso s t' (Magma i t b a) (Magma j t' c c) Source #

This isomorphism can be used to inspect an `IndexedTraversal` to see how it associates the structure and it can also be used to bake the `IndexedTraversal` into a `Magma` so that you can traverse over it multiple times with access to the original indices.

contramapping :: Contravariant f => AnIso s t a b -> Iso (f a) (f b) (f s) (f t) Source #

Lift an `Iso` into a `Contravariant` functor.

    contramapping :: Contravariant f => Iso s t a b -> Iso (f a) (f b) (f s) (f t)
    contramapping :: Contravariant f => Iso' s a -> Iso' (f a) (f s)

dimapping :: (Profunctor p, Profunctor q) => AnIso s t a b -> AnIso s' t' a' b' -> Iso (p a s') (q b t') (p s a') (q t b') Source #

Lift two `Iso`s into both arguments of a `Profunctor` simultaneously.

    dimapping :: Profunctor p => Iso s t a b -> Iso s' t' a' b' -> Iso (p a s') (p b t') (p s a') (p t b')
    dimapping :: Profunctor p => Iso' s a -> Iso' s' a' -> Iso' (p a s') (p s a')

lmapping :: (Profunctor p, Profunctor q) => AnIso s t a b -> Iso (p a x) (q b y) (p s x) (q t y) Source #

Lift an `Iso` contravariantly into the left argument of a `Profunctor`.

    lmapping :: Profunctor p => Iso s t a b -> Iso (p a x) (p b y) (p s x) (p t y)
    lmapping :: Profunctor p => Iso' s a -> Iso' (p a x) (p s x)

rmapping :: (Profunctor p, Profunctor q) => AnIso s t a b -> Iso (p x s) (q y t) (p x a) (q y b) Source #

Lift an `Iso` covariantly into the right argument of a `Profunctor`.

    rmapping :: Profunctor p => Iso s t a b -> Iso (p x s) (p y t) (p x a) (p y b)
    rmapping :: Profunctor p => Iso' s a -> Iso' (p x s) (p x a)

bimapping :: (Bifunctor f, Bifunctor g) => AnIso s t a b -> AnIso s' t' a' b' -> Iso (f s s') (g t t') (f a a') (g b b') Source #

Lift two `Iso`s into both arguments of a `Bifunctor`.

    bimapping :: Bifunctor p => Iso s t a b -> Iso s' t' a' b' -> Iso (p s s') (p t t') (p a a') (p b b')
    bimapping :: Bifunctor p => Iso' s a -> Iso' s' a' -> Iso' (p s s') (p a a')

firsting :: (Bifunctor f, Bifunctor g) => AnIso s t a b -> Iso (f s x) (g t y) (f a x) (g b y) Source #

Lift an `Iso` into the first argument of a `Bifunctor`.

    firsting :: Bifunctor p => Iso s t a b -> Iso (p s x) (p t y) (p a x) (p b y)
    firsting :: Bifunctor p => Iso' s a -> Iso' (p s x) (p a x)

seconding :: (Bifunctor f, Bifunctor g) => AnIso s t a b -> Iso (f x s) (g y t) (f x a) (g y b) Source #

Lift an `Iso` into the second argument of a `Bifunctor`. This is essentially the same as `mapping`, but it takes a 'Bifunctor p' constraint instead of a 'Functor (p a)' one.

    seconding :: Bifunctor p => Iso s t a b -> Iso (p x s) (p y t) (p x a) (p y b)
    seconding :: Bifunctor p => Iso' s a -> Iso' (p x s) (p x a)

coerced :: forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b Source #

Data types that are representationally equal are isomorphic.

This is only available on GHC 7.8+

Since: 4.13

class AsEmpty a where Source #

Minimal complete definition

Nothing

Methods

_Empty :: Prism' a () Source #

    >>> isn't _Empty [1,2,3]
    True

default _Empty :: (Monoid a, Eq a) => Prism' a () Source #

#### Instances

Instances details

AsEmpty Ordering Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' Ordering () Source #
AsEmpty () Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' () () Source #
AsEmpty Event Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' Event () Source #
AsEmpty All Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' All () Source #
AsEmpty Any Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' Any () Source #
AsEmpty Text Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' Text () Source #
AsEmpty ByteString Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' ByteString () Source #
AsEmpty ByteString Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' ByteString () Source #
AsEmpty Text Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' Text () Source #
AsEmpty IntSet Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' IntSet () Source #
AsEmpty [a] Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' [a] () Source #
AsEmpty (Maybe a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Maybe a) () Source #
(Eq a, Num a) => AsEmpty (Sum a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Sum a) () Source #
(Eq a, Num a) => AsEmpty (Product a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Product a) () Source #
AsEmpty (Last a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Last a) () Source #
AsEmpty (First a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (First a) () Source #
AsEmpty a => AsEmpty (Dual a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Dual a) () Source #
AsEmpty (ZipList a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (ZipList a) () Source #
AsEmpty (IntMap a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (IntMap a) () Source #
AsEmpty (HashSet a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (HashSet a) () Source #
Unbox a => AsEmpty (Vector a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Vector a) () Source #
Storable a => AsEmpty (Vector a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Vector a) () Source #
AsEmpty (Vector a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Vector a) () Source #
AsEmpty (Seq a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Seq a) () Source #
AsEmpty (Set a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Set a) () Source #
(AsEmpty a, AsEmpty b) => AsEmpty (a, b) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (a, b) () Source #
AsEmpty (HashMap k a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (HashMap k a) () Source #
AsEmpty (Map k a) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (Map k a) () Source #
(AsEmpty a, AsEmpty b, AsEmpty c) => AsEmpty (a, b, c) Source # |
Instance details Defined in Control.Lens.Empty Methods _Empty :: Prism' (a, b, c) () Source #

pattern Empty :: AsEmpty s => s Source #

class Snoc s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

This class provides a way to attach or detach elements on the right side of a structure in a flexible manner.

Methods

_Snoc :: Prism s t (s, a) (t, b) Source #

    _Snoc :: Prism [a] [b] ([a], a) ([b], b)
    _Snoc :: Prism (Seq a) (Seq b) (Seq a, a) (Seq b, b)
    _Snoc :: Prism (Vector a) (Vector b) (Vector a, a) (Vector b, b)
    _Snoc :: Prism' String (String, Char)
    _Snoc :: Prism' Text (Text, Char)
    _Snoc :: Prism' ByteString (ByteString, Word8)

#### Instances

Instances details

Snoc Text Text Char Char Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism Text Text (Text, Char) (Text, Char) Source #
Snoc ByteString ByteString Word8 Word8 Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism ByteString ByteString (ByteString, Word8) (ByteString, Word8) Source #
Snoc ByteString ByteString Word8 Word8 Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism ByteString ByteString (ByteString, Word8) (ByteString, Word8) Source #
Snoc Text Text Char Char Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism Text Text (Text, Char) (Text, Char) Source #
Snoc [a] [b] a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism [a] [b] ([a], a) ([b], b) Source #
Snoc (ZipList a) (ZipList b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism (ZipList a) (ZipList b) (ZipList a, a) (ZipList b, b) Source #
(Unbox a, Unbox b) => Snoc (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism (Vector a) (Vector b) (Vector a, a) (Vector b, b) Source #
(Storable a, Storable b) => Snoc (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism (Vector a) (Vector b) (Vector a, a) (Vector b, b) Source #
(Prim a, Prim b) => Snoc (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism (Vector a) (Vector b) (Vector a, a) (Vector b, b) Source #
Snoc (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism (Vector a) (Vector b) (Vector a, a) (Vector b, b) Source #
Snoc (Seq a) (Seq b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Snoc :: Prism (Seq a) (Seq b) (Seq a, a) (Seq b, b) Source #
Snoc (Deque a) (Deque b) a b Source # |
Instance details Defined in Control.Lens.Internal.Deque Methods _Snoc :: Prism (Deque a) (Deque b) (Deque a, a) (Deque b, b) Source #

class Cons s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

This class provides a way to attach or detach elements on the left side of a structure in a flexible manner.

Methods

_Cons :: Prism s t (a, s) (b, t) Source #

    _Cons :: Prism [a] [b] (a, [a]) (b, [b])
    _Cons :: Prism (Seq a) (Seq b) (a, Seq a) (b, Seq b)
    _Cons :: Prism (Vector a) (Vector b) (a, Vector a) (b, Vector b)
    _Cons :: Prism' String (Char, String)
    _Cons :: Prism' Text (Char, Text)
    _Cons :: Prism' ByteString (Word8, ByteString)

#### Instances

Instances details

Cons Text Text Char Char Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism Text Text (Char, Text) (Char, Text) Source #
Cons ByteString ByteString Word8 Word8 Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism ByteString ByteString (Word8, ByteString) (Word8, ByteString) Source #
Cons ByteString ByteString Word8 Word8 Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism ByteString ByteString (Word8, ByteString) (Word8, ByteString) Source #
Cons Text Text Char Char Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism Text Text (Char, Text) (Char, Text) Source #
Cons [a] [b] a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism [a] [b] (a, [a]) (b, [b]) Source #
Cons (ZipList a) (ZipList b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism (ZipList a) (ZipList b) (a, ZipList a) (b, ZipList b) Source #
(Unbox a, Unbox b) => Cons (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism (Vector a) (Vector b) (a, Vector a) (b, Vector b) Source #
(Storable a, Storable b) => Cons (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism (Vector a) (Vector b) (a, Vector a) (b, Vector b) Source #
(Prim a, Prim b) => Cons (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism (Vector a) (Vector b) (a, Vector a) (b, Vector b) Source #
Cons (Vector a) (Vector b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism (Vector a) (Vector b) (a, Vector a) (b, Vector b) Source #
Cons (Seq a) (Seq b) a b Source # |
Instance details Defined in Control.Lens.Cons Methods _Cons :: Prism (Seq a) (Seq b) (a, Seq a) (b, Seq b) Source #
Cons (Deque a) (Deque b) a b Source # |
Instance details Defined in Control.Lens.Internal.Deque Methods _Cons :: Prism (Deque a) (Deque b) (a, Deque a) (b, Deque b) Source #

cons :: Cons s s a a => a -> s -> s infixr 5 Source #

`cons` an element onto a container.

    >>> cons a []
    [a]

    >>> cons a [b, c]
    [a,b,c]

    >>> cons a (Seq.fromList [])
    fromList [a]

    >>> cons a (Seq.fromList [b, c])
    fromList [a,b,c]

uncons :: Cons s s a a => s -> Maybe (a, s) Source #

Attempt to extract the left-most element from a container, and a version of the container without that element.

    >>> uncons []
    Nothing

    >>> uncons [a, b, c]
    Just (a,[b,c])

_head :: Cons s s a a => Traversal' s a Source #

A `Traversal` reading and writing to the `head` of a non-empty container.

    >>> [a,b,c]^? _head
    Just a

    >>> [a,b,c] & _head .~ d
    [d,b,c]

    >>> [a,b,c] & _head %~ f
    [f a,b,c]

    >>> [] & _head %~ f
    []

    >>> [1,2,3]^?!_head
    1

    >>> []^?_head
    Nothing

    >>> [1,2]^?_head
    Just 1

    >>> [] & _head .~ 1
    []

    >>> [0] & _head .~ 2
    [2]

    >>> [0,1] & _head .~ 2
    [2,1]

This isn't limited to lists.

For instance you can also `traverse` the head of a `Seq`:

    >>> Seq.fromList [a,b,c,d] & _head %~ f
    fromList [f a,b,c,d]

    >>> Seq.fromList [] ^? _head
    Nothing

    >>> Seq.fromList [a,b,c,d] ^? _head
    Just a

    _head :: Traversal' [a] a
    _head :: Traversal' (Seq a) a
    _head :: Traversal' (Vector a) a

_tail :: Cons s s a a => Traversal' s s Source #

A `Traversal` reading and writing to the `tail` of a non-empty container.

    >>> [a,b] & _tail .~ [c,d,e]
    [a,c,d,e]

    >>> [] & _tail .~ [a,b]
    []

    >>> [a,b,c,d,e] & _tail.traverse %~ f
    [a,f b,f c,f d,f e]

    >>> [1,2] & _tail .~ [3,4,5]
    [1,3,4,5]

    >>> [] & _tail .~ [1,2]
    []

    >>> [a,b,c]^?_tail
    Just [b,c]

    >>> [1,2]^?!_tail
    [2]

    >>> "hello"^._tail
    "ello"

    >>> ""^._tail
    ""

This isn't limited to lists. For instance you can also `traverse` the tail of a `Seq`.

    >>> Seq.fromList [a,b] & _tail .~ Seq.fromList [c,d,e]
    fromList [a,c,d,e]

    >>> Seq.fromList [a,b,c] ^? _tail
    Just (fromList [b,c])

    >>> Seq.fromList [] ^? _tail
    Nothing

    _tail :: Traversal' [a] [a]
    _tail :: Traversal' (Seq a) (Seq a)
    _tail :: Traversal' (Vector a) (Vector a)

_init :: Snoc s s a a => Traversal' s s Source #

A `Traversal` reading and replacing all but the a last element of a non-empty container.

    >>> [a,b,c,d]^?_init
    Just [a,b,c]

    >>> []^?_init
    Nothing

    >>> [a,b] & _init .~ [c,d,e]
    [c,d,e,b]

    >>> [] & _init .~ [a,b]
    []

    >>> [a,b,c,d] & _init.traverse %~ f
    [f a,f b,f c,d]

    >>> [1,2,3]^?_init
    Just [1,2]

    >>> [1,2,3,4]^?!_init
    [1,2,3]

    >>> "hello"^._init
    "hell"

    >>> ""^._init
    ""

    _init :: Traversal' [a] [a]
    _init :: Traversal' (Seq a) (Seq a)
    _init :: Traversal' (Vector a) (Vector a)

_last :: Snoc s s a a => Traversal' s a Source #

A `Traversal` reading and writing to the last element of a non-empty container.

    >>> [a,b,c]^?!_last
    c

    >>> []^?_last
    Nothing

    >>> [a,b,c] & _last %~ f
    [a,b,f c]

    >>> [1,2]^?_last
    Just 2

    >>> [] & _last .~ 1
    []

    >>> [0] & _last .~ 2
    [2]

    >>> [0,1] & _last .~ 2
    [0,2]

This `Traversal` is not limited to lists, however. We can also work with other containers, such as a `Vector`.

    >>> Vector.fromList "abcde" ^? _last
    Just 'e'

    >>> Vector.empty ^? _last
    Nothing

    >>> (Vector.fromList "abcde" & _last .~ 'Q') == Vector.fromList "abcdQ"
    True

    _last :: Traversal' [a] a
    _last :: Traversal' (Seq a) a
    _last :: Traversal' (Vector a) a

snoc :: Snoc s s a a => s -> a -> s infixl 5 Source #

`snoc` an element onto the end of a container.

    >>> snoc (Seq.fromList []) a
    fromList [a]

    >>> snoc (Seq.fromList [b, c]) a
    fromList [b,c,a]

    >>> snoc (LazyT.pack "hello") '!'
    "hello!"

unsnoc :: Snoc s s a a => s -> Maybe (s, a) Source #

Attempt to extract the right-most element from a container, and a version of the container without that element.

    >>> unsnoc (LazyT.pack "hello!")
    Just ("hello",'!')

    >>> unsnoc (LazyT.pack "")
    Nothing

    >>> unsnoc (Seq.fromList [b,c,a])
    Just (fromList [b,c],a)

    >>> unsnoc (Seq.fromList [])
    Nothing

class (Rewrapped s t, Rewrapped t s) => Rewrapping s t Source #

#### Instances

Instances details

(Rewrapped s t, Rewrapped t s) => Rewrapping s t Source # |
Instance details Defined in Control.Lens.Wrapped

class Wrapped s => Rewrapped (s :: *) (t :: *) Source #

#### Instances

Instances details

Rewrapped Fd t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CUid t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CTimer t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CSpeed t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CRLim t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CNlink t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CKey t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CId t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CGid t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CFsFilCnt t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CFsBlkCnt t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CClockId t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CCc t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CBlkSize t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CBlkCnt t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CSsize t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CTcflag t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped COff t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CPid t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CIno t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CDev t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CMode t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CWchar t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CUShort t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CUSeconds t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CULong t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CULLong t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CUIntPtr t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CUIntMax t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CUInt t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CUChar t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CTime t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CSize t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CSigAtomic t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CShort t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CSUSeconds t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CSChar t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CPtrdiff t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CLong t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CLLong t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CIntPtr t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CIntMax t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CFloat t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CDouble t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CClock t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CChar t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CBool t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped CInt t Source # |
Instance details Defined in Control.Lens.Wrapped
Rewrapped Errno t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ All => Rewrapped All t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Any => Rewrapped Any t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ IntSet => Rewrapped IntSet t Source # | Use ``wrapping` `fromList``. unwrapping returns a sorted list.
Instance details Defined in Control.Lens.Wrapped
t ~ AssertionFailed => Rewrapped AssertionFailed t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ CompactionFailed => Rewrapped CompactionFailed t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ NoMethodError => Rewrapped NoMethodError t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ PatternMatchFail => Rewrapped PatternMatchFail t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ RecConError => Rewrapped RecConError t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ RecSelError => Rewrapped RecSelError t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ RecUpdError => Rewrapped RecUpdError t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ TypeError => Rewrapped TypeError t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ErrorCall => Rewrapped ErrorCall t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Par1 p' => Rewrapped (Par1 p) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Endo b => Rewrapped (Endo a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Identity b => Rewrapped (Identity a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Sum b => Rewrapped (Sum a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Product b => Rewrapped (Product a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ NonEmpty b => Rewrapped (NonEmpty a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Last b => Rewrapped (Last a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ First b => Rewrapped (First a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Dual b => Rewrapped (Dual a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Down b => Rewrapped (Down a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ZipList b => Rewrapped (ZipList a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Equivalence b => Rewrapped (Equivalence a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Comparison b => Rewrapped (Comparison a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ IntMap a' => Rewrapped (IntMap a) t Source # | Use ``wrapping` `fromList``. unwrapping returns a sorted list.
Instance details Defined in Control.Lens.Wrapped
(t ~ HashSet a', Hashable a, Eq a) => Rewrapped (HashSet a) t Source # | Use ``wrapping` `fromList``. Unwrapping returns some permutation of the list.
Instance details Defined in Control.Lens.Wrapped
(Unbox a, t ~ Vector a') => Rewrapped (Vector a) t Source # |
Instance details Defined in Control.Lens.Wrapped
(Storable a, t ~ Vector a') => Rewrapped (Vector a) t Source # |
Instance details Defined in Control.Lens.Wrapped
(Prim a, t ~ Vector a') => Rewrapped (Vector a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Vector a' => Rewrapped (Vector a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Predicate b => Rewrapped (Predicate a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WrappedMonoid b => Rewrapped (WrappedMonoid a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ First b => Rewrapped (First a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Last b => Rewrapped (Last a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Max b => Rewrapped (Max a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Min b => Rewrapped (Min a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Option b => Rewrapped (Option a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Seq a' => Rewrapped (Seq a) t Source # |
Instance details Defined in Control.Lens.Wrapped
(t ~ Set a', Ord a) => Rewrapped (Set a) t Source # | Use ``wrapping` `fromList``. unwrapping returns a sorted list.
Instance details Defined in Control.Lens.Wrapped
t ~ ArrowMonad m' a' => Rewrapped (ArrowMonad m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WrappedMonad m' a' => Rewrapped (WrappedMonad m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ MaybeT n b => Rewrapped (MaybeT m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ CatchT m' a' => Rewrapped (CatchT m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ CoiterT w' a' => Rewrapped (CoiterT w a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ IterT m' a' => Rewrapped (IterT m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Alt f' a' => Rewrapped (Alt f a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WrappedApplicative f' a' => Rewrapped (WrappedApplicative f a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ MaybeApply f' a' => Rewrapped (MaybeApply f a) t Source # |
Instance details Defined in Control.Lens.Wrapped
(t ~ HashMap k' a', Hashable k, Eq k) => Rewrapped (HashMap k a) t Source # | Use ``wrapping` `fromList``. Unwrapping returns some permutation of the list.
Instance details Defined in Control.Lens.Wrapped
t ~ Op a' b' => Rewrapped (Op a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ListT n b => Rewrapped (ListT m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
(t ~ Map k' a', Ord k) => Rewrapped (Map k a) t Source # | Use ``wrapping` `fromList``. unwrapping returns a sorted list.
Instance details Defined in Control.Lens.Wrapped
t ~ Rec1 f' p' => Rewrapped (Rec1 f p) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Ap g b => Rewrapped (Ap f a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Alt g b => Rewrapped (Alt f a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Kleisli m' a' b' => Rewrapped (Kleisli m a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Const a' x' => Rewrapped (Const a x) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WrappedArrow a' b' c' => Rewrapped (WrappedArrow a b c) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Join p' a' => Rewrapped (Join p a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Fix p' a' => Rewrapped (Fix p a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ TracedT m' w' a' => Rewrapped (TracedT m w a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ IdentityT n b => Rewrapped (IdentityT m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Compose f' g' a' => Rewrapped (Compose f g a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ComposeFC f' g' a' => Rewrapped (ComposeFC f g a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ComposeCF f' g' a' => Rewrapped (ComposeCF f g a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ExceptT e' m' a' => Rewrapped (ExceptT e m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ FreeT f' m' a' => Rewrapped (FreeT f m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ CofreeT f' w' a' => Rewrapped (CofreeT f w a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ApT f' g' a' => Rewrapped (ApT f g a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Star f' d' c' => Rewrapped (Star f d c) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Costar f' d' c' => Rewrapped (Costar f d c) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WrappedArrow p' a' b' => Rewrapped (WrappedArrow p a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Forget r' a' b' => Rewrapped (Forget r a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ErrorT e' m' a' => Rewrapped (ErrorT e m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Static f' a' b' => Rewrapped (Static f a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Tagged s' a' => Rewrapped (Tagged s a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Backwards g b => Rewrapped (Backwards f a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Reverse g b => Rewrapped (Reverse f a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Constant a' b' => Rewrapped (Constant a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ReaderT s n b => Rewrapped (ReaderT r m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ StateT s' m' a' => Rewrapped (StateT s m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ StateT s' m' a' => Rewrapped (StateT s m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WriterT w' m' a' => Rewrapped (WriterT w m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WriterT w' m' a' => Rewrapped (WriterT w m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ K1 i' c' p' => Rewrapped (K1 i c p) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Cayley f' p' a' b' => Rewrapped (Cayley f p a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ ContT r' m' a' => Rewrapped (ContT r m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ M1 i' c' f' p' => Rewrapped (M1 i c f p) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ (f' :.: g') p' => Rewrapped ((f :.: g) p) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Compose f' g' a' => Rewrapped (Compose f g a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WrappedBifunctor p' a' b' => Rewrapped (WrappedBifunctor p a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Joker g' a' b' => Rewrapped (Joker g a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Flip p' a' b' => Rewrapped (Flip p a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Clown f' a' b' => Rewrapped (Clown f a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Dual k' a' b' => Rewrapped (Dual k6 a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ WrappedCategory k' a' b' => Rewrapped (WrappedCategory k6 a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Semi m' a' b' => Rewrapped (Semi m a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ RWST r' w' s' m' a' => Rewrapped (RWST r w s m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ RWST r' w' s' m' a' => Rewrapped (RWST r w s m a) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Tannen f' p' a' b' => Rewrapped (Tannen f p a b) t Source # |
Instance details Defined in Control.Lens.Wrapped
t ~ Biff p' f' g' a' b' => Rewrapped (Biff p f g a b) t Source # |
Instance details Defined in Control.Lens.Wrapped

class Wrapped s where Source #

`Wrapped` provides isomorphisms to wrap and unwrap newtypes or data types with one constructor.

Minimal complete definition

Nothing

Associated Types

type Unwrapped s :: * Source #

type Unwrapped s = GUnwrapped (Rep s) Source #

Methods

_Wrapped' :: Iso' s (Unwrapped s) Source #

An isomorphism between `s` and `a`.

If your type has a `Generic` instance, `_Wrapped'` will default to `_GWrapped'`, and you can choose to not override it with your own definition.

default _Wrapped' :: (Generic s, D1 d (C1 c (S1 s' (Rec0 a))) ~ Rep s, Unwrapped s ~ GUnwrapped (Rep s)) => Iso' s (Unwrapped s) Source #

#### Instances

Instances details

Wrapped Fd Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped Fd Source # Methods _Wrapped' :: Iso' Fd (Unwrapped Fd) Source #
Wrapped CUid Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CUid Source # Methods _Wrapped' :: Iso' CUid (Unwrapped CUid) Source #
Wrapped CTimer Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CTimer Source # Methods _Wrapped' :: Iso' CTimer (Unwrapped CTimer) Source #
Wrapped CSpeed Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CSpeed Source # Methods _Wrapped' :: Iso' CSpeed (Unwrapped CSpeed) Source #
Wrapped CRLim Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CRLim Source # Methods _Wrapped' :: Iso' CRLim (Unwrapped CRLim) Source #
Wrapped CNlink Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CNlink Source # Methods _Wrapped' :: Iso' CNlink (Unwrapped CNlink) Source #
Wrapped CKey Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CKey Source # Methods _Wrapped' :: Iso' CKey (Unwrapped CKey) Source #
Wrapped CId Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CId Source # Methods _Wrapped' :: Iso' CId (Unwrapped CId) Source #
Wrapped CGid Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CGid Source # Methods _Wrapped' :: Iso' CGid (Unwrapped CGid) Source #
Wrapped CFsFilCnt Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CFsFilCnt Source # Methods _Wrapped' :: Iso' CFsFilCnt (Unwrapped CFsFilCnt) Source #
Wrapped CFsBlkCnt Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CFsBlkCnt Source # Methods _Wrapped' :: Iso' CFsBlkCnt (Unwrapped CFsBlkCnt) Source #
Wrapped CClockId Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CClockId Source # Methods _Wrapped' :: Iso' CClockId (Unwrapped CClockId) Source #
Wrapped CCc Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CCc Source # Methods _Wrapped' :: Iso' CCc (Unwrapped CCc) Source #
Wrapped CBlkSize Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CBlkSize Source # Methods _Wrapped' :: Iso' CBlkSize (Unwrapped CBlkSize) Source #
Wrapped CBlkCnt Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CBlkCnt Source # Methods _Wrapped' :: Iso' CBlkCnt (Unwrapped CBlkCnt) Source #
Wrapped CSsize Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CSsize Source # Methods _Wrapped' :: Iso' CSsize (Unwrapped CSsize) Source #
Wrapped CTcflag Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CTcflag Source # Methods _Wrapped' :: Iso' CTcflag (Unwrapped CTcflag) Source #
Wrapped COff Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped COff Source # Methods _Wrapped' :: Iso' COff (Unwrapped COff) Source #
Wrapped CPid Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CPid Source # Methods _Wrapped' :: Iso' CPid (Unwrapped CPid) Source #
Wrapped CIno Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CIno Source # Methods _Wrapped' :: Iso' CIno (Unwrapped CIno) Source #
Wrapped CDev Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CDev Source # Methods _Wrapped' :: Iso' CDev (Unwrapped CDev) Source #
Wrapped CMode Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CMode Source # Methods _Wrapped' :: Iso' CMode (Unwrapped CMode) Source #
Wrapped CWchar Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CWchar Source # Methods _Wrapped' :: Iso' CWchar (Unwrapped CWchar) Source #
Wrapped CUShort Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CUShort Source # Methods _Wrapped' :: Iso' CUShort (Unwrapped CUShort) Source #
Wrapped CUSeconds Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CUSeconds Source # Methods _Wrapped' :: Iso' CUSeconds (Unwrapped CUSeconds) Source #
Wrapped CULong Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CULong Source # Methods _Wrapped' :: Iso' CULong (Unwrapped CULong) Source #
Wrapped CULLong Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CULLong Source # Methods _Wrapped' :: Iso' CULLong (Unwrapped CULLong) Source #
Wrapped CUIntPtr Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CUIntPtr Source # Methods _Wrapped' :: Iso' CUIntPtr (Unwrapped CUIntPtr) Source #
Wrapped CUIntMax Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CUIntMax Source # Methods _Wrapped' :: Iso' CUIntMax (Unwrapped CUIntMax) Source #
Wrapped CUInt Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CUInt Source # Methods _Wrapped' :: Iso' CUInt (Unwrapped CUInt) Source #
Wrapped CUChar Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CUChar Source # Methods _Wrapped' :: Iso' CUChar (Unwrapped CUChar) Source #
Wrapped CTime Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CTime Source # Methods _Wrapped' :: Iso' CTime (Unwrapped CTime) Source #
Wrapped CSize Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CSize Source # Methods _Wrapped' :: Iso' CSize (Unwrapped CSize) Source #
Wrapped CSigAtomic Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CSigAtomic Source # Methods _Wrapped' :: Iso' CSigAtomic (Unwrapped CSigAtomic) Source #
Wrapped CShort Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CShort Source # Methods _Wrapped' :: Iso' CShort (Unwrapped CShort) Source #
Wrapped CSUSeconds Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CSUSeconds Source # Methods _Wrapped' :: Iso' CSUSeconds (Unwrapped CSUSeconds) Source #
Wrapped CSChar Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CSChar Source # Methods _Wrapped' :: Iso' CSChar (Unwrapped CSChar) Source #
Wrapped CPtrdiff Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CPtrdiff Source # Methods _Wrapped' :: Iso' CPtrdiff (Unwrapped CPtrdiff) Source #
Wrapped CLong Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CLong Source # Methods _Wrapped' :: Iso' CLong (Unwrapped CLong) Source #
Wrapped CLLong Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CLLong Source # Methods _Wrapped' :: Iso' CLLong (Unwrapped CLLong) Source #
Wrapped CIntPtr Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CIntPtr Source # Methods _Wrapped' :: Iso' CIntPtr (Unwrapped CIntPtr) Source #
Wrapped CIntMax Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CIntMax Source # Methods _Wrapped' :: Iso' CIntMax (Unwrapped CIntMax) Source #
Wrapped CFloat Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CFloat Source # Methods _Wrapped' :: Iso' CFloat (Unwrapped CFloat) Source #
Wrapped CDouble Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CDouble Source # Methods _Wrapped' :: Iso' CDouble (Unwrapped CDouble) Source #
Wrapped CClock Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CClock Source # Methods _Wrapped' :: Iso' CClock (Unwrapped CClock) Source #
Wrapped CChar Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CChar Source # Methods _Wrapped' :: Iso' CChar (Unwrapped CChar) Source #
Wrapped CBool Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CBool Source # Methods _Wrapped' :: Iso' CBool (Unwrapped CBool) Source #
Wrapped CInt Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CInt Source # Methods _Wrapped' :: Iso' CInt (Unwrapped CInt) Source #
Wrapped Errno Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped Errno Source # Methods _Wrapped' :: Iso' Errno (Unwrapped Errno) Source #
Wrapped All Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped All Source # Methods _Wrapped' :: Iso' All (Unwrapped All) Source #
Wrapped Any Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped Any Source # Methods _Wrapped' :: Iso' Any (Unwrapped Any) Source #
Wrapped IntSet Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped IntSet Source # Methods _Wrapped' :: Iso' IntSet (Unwrapped IntSet) Source #
Wrapped AssertionFailed Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped AssertionFailed Source # Methods _Wrapped' :: Iso' AssertionFailed (Unwrapped AssertionFailed) Source #
Wrapped CompactionFailed Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped CompactionFailed Source # Methods _Wrapped' :: Iso' CompactionFailed (Unwrapped CompactionFailed) Source #
Wrapped NoMethodError Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped NoMethodError Source # Methods _Wrapped' :: Iso' NoMethodError (Unwrapped NoMethodError) Source #
Wrapped PatternMatchFail Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped PatternMatchFail Source # Methods _Wrapped' :: Iso' PatternMatchFail (Unwrapped PatternMatchFail) Source #
Wrapped RecConError Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped RecConError Source # Methods _Wrapped' :: Iso' RecConError (Unwrapped RecConError) Source #
Wrapped RecSelError Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped RecSelError Source # Methods _Wrapped' :: Iso' RecSelError (Unwrapped RecSelError) Source #
Wrapped RecUpdError Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped RecUpdError Source # Methods _Wrapped' :: Iso' RecUpdError (Unwrapped RecUpdError) Source #
Wrapped TypeError Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped TypeError Source # Methods _Wrapped' :: Iso' TypeError (Unwrapped TypeError) Source #
Wrapped ErrorCall Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped ErrorCall Source # Methods _Wrapped' :: Iso' ErrorCall (Unwrapped ErrorCall) Source #
Wrapped (Par1 p) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Par1 p) Source # Methods _Wrapped' :: Iso' (Par1 p) (Unwrapped (Par1 p)) Source #
Wrapped (Endo a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Endo a) Source # Methods _Wrapped' :: Iso' (Endo a) (Unwrapped (Endo a)) Source #
Wrapped (Identity a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Identity a) Source # Methods _Wrapped' :: Iso' (Identity a) (Unwrapped (Identity a)) Source #
Wrapped (Sum a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Sum a) Source # Methods _Wrapped' :: Iso' (Sum a) (Unwrapped (Sum a)) Source #
Wrapped (Product a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Product a) Source # Methods _Wrapped' :: Iso' (Product a) (Unwrapped (Product a)) Source #
Wrapped (NonEmpty a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (NonEmpty a) Source # Methods _Wrapped' :: Iso' (NonEmpty a) (Unwrapped (NonEmpty a)) Source #
Wrapped (Last a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Last a) Source # Methods _Wrapped' :: Iso' (Last a) (Unwrapped (Last a)) Source #
Wrapped (First a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (First a) Source # Methods _Wrapped' :: Iso' (First a) (Unwrapped (First a)) Source #
Wrapped (Dual a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Dual a) Source # Methods _Wrapped' :: Iso' (Dual a) (Unwrapped (Dual a)) Source #
Wrapped (Down a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Down a) Source # Methods _Wrapped' :: Iso' (Down a) (Unwrapped (Down a)) Source #
Wrapped (ZipList a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ZipList a) Source # Methods _Wrapped' :: Iso' (ZipList a) (Unwrapped (ZipList a)) Source #
Wrapped (Equivalence a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Equivalence a) Source # Methods _Wrapped' :: Iso' (Equivalence a) (Unwrapped (Equivalence a)) Source #
Wrapped (Comparison a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Comparison a) Source # Methods _Wrapped' :: Iso' (Comparison a) (Unwrapped (Comparison a)) Source #
Wrapped (IntMap a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (IntMap a) Source # Methods _Wrapped' :: Iso' (IntMap a) (Unwrapped (IntMap a)) Source #
(Hashable a, Eq a) => Wrapped (HashSet a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (HashSet a) Source # Methods _Wrapped' :: Iso' (HashSet a) (Unwrapped (HashSet a)) Source #
Unbox a => Wrapped (Vector a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Vector a) Source # Methods _Wrapped' :: Iso' (Vector a) (Unwrapped (Vector a)) Source #
Storable a => Wrapped (Vector a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Vector a) Source # Methods _Wrapped' :: Iso' (Vector a) (Unwrapped (Vector a)) Source #
Prim a => Wrapped (Vector a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Vector a) Source # Methods _Wrapped' :: Iso' (Vector a) (Unwrapped (Vector a)) Source #
Wrapped (Vector a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Vector a) Source # Methods _Wrapped' :: Iso' (Vector a) (Unwrapped (Vector a)) Source #
Wrapped (Predicate a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Predicate a) Source # Methods _Wrapped' :: Iso' (Predicate a) (Unwrapped (Predicate a)) Source #
Wrapped (WrappedMonoid a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WrappedMonoid a) Source # Methods _Wrapped' :: Iso' (WrappedMonoid a) (Unwrapped (WrappedMonoid a)) Source #
Wrapped (First a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (First a) Source # Methods _Wrapped' :: Iso' (First a) (Unwrapped (First a)) Source #
Wrapped (Last a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Last a) Source # Methods _Wrapped' :: Iso' (Last a) (Unwrapped (Last a)) Source #
Wrapped (Max a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Max a) Source # Methods _Wrapped' :: Iso' (Max a) (Unwrapped (Max a)) Source #
Wrapped (Min a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Min a) Source # Methods _Wrapped' :: Iso' (Min a) (Unwrapped (Min a)) Source #
Wrapped (Option a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Option a) Source # Methods _Wrapped' :: Iso' (Option a) (Unwrapped (Option a)) Source #
Wrapped (Seq a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Seq a) Source # Methods _Wrapped' :: Iso' (Seq a) (Unwrapped (Seq a)) Source #
Ord a => Wrapped (Set a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Set a) Source # Methods _Wrapped' :: Iso' (Set a) (Unwrapped (Set a)) Source #
Wrapped (ArrowMonad m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ArrowMonad m a) Source # Methods _Wrapped' :: Iso' (ArrowMonad m a) (Unwrapped (ArrowMonad m a)) Source #
Wrapped (WrappedMonad m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WrappedMonad m a) Source # Methods _Wrapped' :: Iso' (WrappedMonad m a) (Unwrapped (WrappedMonad m a)) Source #
Wrapped (MaybeT m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (MaybeT m a) Source # Methods _Wrapped' :: Iso' (MaybeT m a) (Unwrapped (MaybeT m a)) Source #
Wrapped (CatchT m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (CatchT m a) Source # Methods _Wrapped' :: Iso' (CatchT m a) (Unwrapped (CatchT m a)) Source #
Wrapped (CoiterT w a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (CoiterT w a) Source # Methods _Wrapped' :: Iso' (CoiterT w a) (Unwrapped (CoiterT w a)) Source #
Wrapped (IterT m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (IterT m a) Source # Methods _Wrapped' :: Iso' (IterT m a) (Unwrapped (IterT m a)) Source #
Wrapped (Alt f a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Alt f a) Source # Methods _Wrapped' :: Iso' (Alt f a) (Unwrapped (Alt f a)) Source #
Wrapped (WrappedApplicative f a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WrappedApplicative f a) Source # Methods _Wrapped' :: Iso' (WrappedApplicative f a) (Unwrapped (WrappedApplicative f a)) Source #
Wrapped (MaybeApply f a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (MaybeApply f a) Source # Methods _Wrapped' :: Iso' (MaybeApply f a) (Unwrapped (MaybeApply f a)) Source #
(Hashable k, Eq k) => Wrapped (HashMap k a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (HashMap k a) Source # Methods _Wrapped' :: Iso' (HashMap k a) (Unwrapped (HashMap k a)) Source #
Wrapped (Op a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Op a b) Source # Methods _Wrapped' :: Iso' (Op a b) (Unwrapped (Op a b)) Source #
Wrapped (ListT m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ListT m a) Source # Methods _Wrapped' :: Iso' (ListT m a) (Unwrapped (ListT m a)) Source #
Ord k => Wrapped (Map k a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Map k a) Source # Methods _Wrapped' :: Iso' (Map k a) (Unwrapped (Map k a)) Source #
Wrapped (Rec1 f p) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Rec1 f p) Source # Methods _Wrapped' :: Iso' (Rec1 f p) (Unwrapped (Rec1 f p)) Source #
Wrapped (Ap f a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Ap f a) Source # Methods _Wrapped' :: Iso' (Ap f a) (Unwrapped (Ap f a)) Source #
Wrapped (Alt f a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Alt f a) Source # Methods _Wrapped' :: Iso' (Alt f a) (Unwrapped (Alt f a)) Source #
Wrapped (Kleisli m a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Kleisli m a b) Source # Methods _Wrapped' :: Iso' (Kleisli m a b) (Unwrapped (Kleisli m a b)) Source #
Wrapped (Const a x) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Const a x) Source # Methods _Wrapped' :: Iso' (Const a x) (Unwrapped (Const a x)) Source #
Wrapped (WrappedArrow a b c) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WrappedArrow a b c) Source # Methods _Wrapped' :: Iso' (WrappedArrow a b c) (Unwrapped (WrappedArrow a b c)) Source #
Wrapped (Join p a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Join p a) Source # Methods _Wrapped' :: Iso' (Join p a) (Unwrapped (Join p a)) Source #
Wrapped (Fix p a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Fix p a) Source # Methods _Wrapped' :: Iso' (Fix p a) (Unwrapped (Fix p a)) Source #
Wrapped (TracedT m w a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (TracedT m w a) Source # Methods _Wrapped' :: Iso' (TracedT m w a) (Unwrapped (TracedT m w a)) Source #
Wrapped (IdentityT m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (IdentityT m a) Source # Methods _Wrapped' :: Iso' (IdentityT m a) (Unwrapped (IdentityT m a)) Source #
Wrapped (Compose f g a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Compose f g a) Source # Methods _Wrapped' :: Iso' (Compose f g a) (Unwrapped (Compose f g a)) Source #
Wrapped (ComposeFC f g a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ComposeFC f g a) Source # Methods _Wrapped' :: Iso' (ComposeFC f g a) (Unwrapped (ComposeFC f g a)) Source #
Wrapped (ComposeCF f g a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ComposeCF f g a) Source # Methods _Wrapped' :: Iso' (ComposeCF f g a) (Unwrapped (ComposeCF f g a)) Source #
Wrapped (ExceptT e m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ExceptT e m a) Source # Methods _Wrapped' :: Iso' (ExceptT e m a) (Unwrapped (ExceptT e m a)) Source #
Wrapped (FreeT f m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (FreeT f m a) Source # Methods _Wrapped' :: Iso' (FreeT f m a) (Unwrapped (FreeT f m a)) Source #
Wrapped (CofreeT f w a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (CofreeT f w a) Source # Methods _Wrapped' :: Iso' (CofreeT f w a) (Unwrapped (CofreeT f w a)) Source #
Wrapped (ApT f g a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ApT f g a) Source # Methods _Wrapped' :: Iso' (ApT f g a) (Unwrapped (ApT f g a)) Source #
Wrapped (Star f d c) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Star f d c) Source # Methods _Wrapped' :: Iso' (Star f d c) (Unwrapped (Star f d c)) Source #
Wrapped (Costar f d c) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Costar f d c) Source # Methods _Wrapped' :: Iso' (Costar f d c) (Unwrapped (Costar f d c)) Source #
Wrapped (WrappedArrow p a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WrappedArrow p a b) Source # Methods _Wrapped' :: Iso' (WrappedArrow p a b) (Unwrapped (WrappedArrow p a b)) Source #
Wrapped (Forget r a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Forget r a b) Source # Methods _Wrapped' :: Iso' (Forget r a b) (Unwrapped (Forget r a b)) Source #
Wrapped (ErrorT e m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ErrorT e m a) Source # Methods _Wrapped' :: Iso' (ErrorT e m a) (Unwrapped (ErrorT e m a)) Source #
Wrapped (Static f a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Static f a b) Source # Methods _Wrapped' :: Iso' (Static f a b) (Unwrapped (Static f a b)) Source #
Wrapped (Tagged s a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Tagged s a) Source # Methods _Wrapped' :: Iso' (Tagged s a) (Unwrapped (Tagged s a)) Source #
Wrapped (Backwards f a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Backwards f a) Source # Methods _Wrapped' :: Iso' (Backwards f a) (Unwrapped (Backwards f a)) Source #
Wrapped (Reverse f a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Reverse f a) Source # Methods _Wrapped' :: Iso' (Reverse f a) (Unwrapped (Reverse f a)) Source #
Wrapped (Constant a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Constant a b) Source # Methods _Wrapped' :: Iso' (Constant a b) (Unwrapped (Constant a b)) Source #
Wrapped (ReaderT r m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ReaderT r m a) Source # Methods _Wrapped' :: Iso' (ReaderT r m a) (Unwrapped (ReaderT r m a)) Source #
Wrapped (StateT s m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (StateT s m a) Source # Methods _Wrapped' :: Iso' (StateT s m a) (Unwrapped (StateT s m a)) Source #
Wrapped (StateT s m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (StateT s m a) Source # Methods _Wrapped' :: Iso' (StateT s m a) (Unwrapped (StateT s m a)) Source #
Wrapped (WriterT w m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WriterT w m a) Source # Methods _Wrapped' :: Iso' (WriterT w m a) (Unwrapped (WriterT w m a)) Source #
Wrapped (WriterT w m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WriterT w m a) Source # Methods _Wrapped' :: Iso' (WriterT w m a) (Unwrapped (WriterT w m a)) Source #
Wrapped (K1 i c p) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (K1 i c p) Source # Methods _Wrapped' :: Iso' (K1 i c p) (Unwrapped (K1 i c p)) Source #
Wrapped (Cayley f p a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Cayley f p a b) Source # Methods _Wrapped' :: Iso' (Cayley f p a b) (Unwrapped (Cayley f p a b)) Source #
Wrapped (ContT r m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (ContT r m a) Source # Methods _Wrapped' :: Iso' (ContT r m a) (Unwrapped (ContT r m a)) Source #
Wrapped (M1 i c f p) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (M1 i c f p) Source # Methods _Wrapped' :: Iso' (M1 i c f p) (Unwrapped (M1 i c f p)) Source #
Wrapped ((f :.: g) p) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped ((f :.: g) p) Source # Methods _Wrapped' :: Iso' ((f :.: g) p) (Unwrapped ((f :.: g) p)) Source #
Wrapped (Compose f g a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Compose f g a) Source # Methods _Wrapped' :: Iso' (Compose f g a) (Unwrapped (Compose f g a)) Source #
Wrapped (WrappedBifunctor p a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WrappedBifunctor p a b) Source # Methods _Wrapped' :: Iso' (WrappedBifunctor p a b) (Unwrapped (WrappedBifunctor p a b)) Source #
Wrapped (Joker g a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Joker g a b) Source # Methods _Wrapped' :: Iso' (Joker g a b) (Unwrapped (Joker g a b)) Source #
Wrapped (Flip p a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Flip p a b) Source # Methods _Wrapped' :: Iso' (Flip p a b) (Unwrapped (Flip p a b)) Source #
Wrapped (Clown f a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Clown f a b) Source # Methods _Wrapped' :: Iso' (Clown f a b) (Unwrapped (Clown f a b)) Source #
Wrapped (Dual k3 a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Dual k3 a b) Source # Methods _Wrapped' :: Iso' (Dual k3 a b) (Unwrapped (Dual k3 a b)) Source #
Wrapped (WrappedCategory k3 a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (WrappedCategory k3 a b) Source # Methods _Wrapped' :: Iso' (WrappedCategory k3 a b) (Unwrapped (WrappedCategory k3 a b)) Source #
Wrapped (Semi m a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Semi m a b) Source # Methods _Wrapped' :: Iso' (Semi m a b) (Unwrapped (Semi m a b)) Source #
Wrapped (RWST r w s m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (RWST r w s m a) Source # Methods _Wrapped' :: Iso' (RWST r w s m a) (Unwrapped (RWST r w s m a)) Source #
Wrapped (RWST r w s m a) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (RWST r w s m a) Source # Methods _Wrapped' :: Iso' (RWST r w s m a) (Unwrapped (RWST r w s m a)) Source #
Wrapped (Tannen f p a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Tannen f p a b) Source # Methods _Wrapped' :: Iso' (Tannen f p a b) (Unwrapped (Tannen f p a b)) Source #
Wrapped (Biff p f g a b) Source # |
Instance details Defined in Control.Lens.Wrapped Associated Types type Unwrapped (Biff p f g a b) Source # Methods _Wrapped' :: Iso' (Biff p f g a b) (Unwrapped (Biff p f g a b)) Source #

pattern Unwrapped :: Rewrapped t t => t -> Unwrapped t Source #

pattern Wrapped :: Rewrapped s s => Unwrapped s -> s Source #

_GWrapped' :: (Generic s, D1 d (C1 c (S1 s' (Rec0 a))) ~ Rep s, Unwrapped s ~ GUnwrapped (Rep s)) => Iso' s (Unwrapped s) Source #

Implement the `_Wrapped` operation for a type using its `Generic` instance.

_Unwrapped' :: Wrapped s => Iso' (Unwrapped s) s Source #

_Wrapped :: Rewrapping s t => Iso s t (Unwrapped s) (Unwrapped t) Source #

Work under a newtype wrapper.

    >>> Const "hello" & _Wrapped %~ Prelude.length & getConst
    5

    _Wrapped   ≡ from _Unwrapped
    _Unwrapped ≡ from _Wrapped

_Unwrapped :: Rewrapping s t => Iso (Unwrapped t) (Unwrapped s) t s Source #

op :: Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s Source #

Given the constructor for a `Wrapped` type, return a deconstructor that is its inverse.

Assuming the `Wrapped` instance is legal, these laws hold:

    op f . f ≡ id
    f . op f ≡ id

    >>> op Identity (Identity 4)
    4

    >>> op Const (Const "hello")
    "hello"

_Wrapping' :: Wrapped s => (Unwrapped s -> s) -> Iso' s (Unwrapped s) Source #

This is a convenient version of `_Wrapped` with an argument that's ignored.

The user supplied function is ignored, merely its type is used.

_Unwrapping' :: Wrapped s => (Unwrapped s -> s) -> Iso' (Unwrapped s) s Source #

This is a convenient version of `_Wrapped` with an argument that's ignored.

The user supplied function is ignored, merely its type is used.

_Wrapping :: Rewrapping s t => (Unwrapped s -> s) -> Iso s t (Unwrapped s) (Unwrapped t) Source #

This is a convenient version of `_Wrapped` with an argument that's ignored.

The user supplied function is ignored, merely its types are used.

_Unwrapping :: Rewrapping s t => (Unwrapped s -> s) -> Iso (Unwrapped t) (Unwrapped s) t s Source #

This is a convenient version of `_Unwrapped` with an argument that's ignored.

The user supplied function is ignored, merely its types are used.

ala :: (Functor f, Rewrapping s t) => (Unwrapped s -> s) -> ((Unwrapped t -> t) -> f s) -> f (Unwrapped s) Source #

This combinator is based on `ala` from Conor McBride's work on Epigram.

As with `_Wrapping`, the user supplied function for the newtype is ignored.

    >>> ala Sum foldMap [1,2,3,4]
    10

    >>> ala All foldMap [True,True]
    True

    >>> ala All foldMap [True,False]
    False

    >>> ala Any foldMap [False,False]
    False

    >>> ala Any foldMap [True,False]
    True

    >>> ala Product foldMap [1,2,3,4]
    24

You may want to think of this combinator as having the following, simpler, type.

    ala :: Rewrapping s t => (Unwrapped s -> s) -> ((Unwrapped t -> t) -> e -> s) -> e -> Unwrapped s

alaf :: (Functor f, Functor g, Rewrapping s t) => (Unwrapped s -> s) -> (f t -> g s) -> f (Unwrapped t) -> g (Unwrapped s) Source #

This combinator is based on `ala'` from Conor McBride's work on Epigram.

As with `_Wrapping`, the user supplied function for the newtype is ignored.

    alaf :: Rewrapping s t => (Unwrapped s -> s) -> ((r -> t) -> e -> s) -> (r -> Unwrapped t) -> e -> Unwrapped s

    >>> alaf Sum foldMap Prelude.length ["hello","world"]
    10

class (Magnified m ~ Magnified n, MonadReader b m, MonadReader a n) => Magnify m n b a | m -> b, n -> a, m a -> n, n b -> m where Source #

This class allows us to use `magnify` part of the environment, changing the environment supplied by many different `Monad` transformers. Unlike `zoom` this can change the environment of a deeply nested `Monad` transformer.

Also, unlike `zoom`, this can be used with any valid `Getter`, but cannot be used with a `Traversal` or `Fold`.

Methods

magnify :: ((Functor (Magnified m c), Contravariant (Magnified m c)) => LensLike' (Magnified m c) a b) -> m c -> n c infixr 2 Source #

Run a monadic action in a larger environment than it was defined in, using a `Getter`.

This acts like `local`, but can in many cases change the type of the environment as well.

This is commonly used to lift actions in a simpler `Reader` `Monad` into a `Monad` with a larger environment type.

This can be used to edit pretty much any `Monad` transformer stack with an environment in it:

    >>> (1,2) & magnify _2 (+1)
    3

    >>> flip Reader.runReader (1,2) $ magnify _1 Reader.ask
    1

    >>> flip Reader.runReader (1,2,[10..20]) $ magnify (_3._tail) Reader.ask
    [11,12,13,14,15,16,17,18,19,20]

The type can be read as

      magnify :: LensLike' (Magnified m c) a b -> m c -> n c

but the higher-rank constraints make it easier to apply `magnify` to a `Getter` in highly-polymorphic code.

    magnify :: Getter s a -> (a -> r) -> s -> r
    magnify :: Monoid r => Fold s a   -> (a -> r) -> s -> r

    magnify :: Monoid w                 => Getter s t -> RWS t w st c -> RWS s w st c
    magnify :: (Monoid w, Monoid c) => Fold s a   -> RWS a w st c -> RWS s w st c
    ...

#### Instances

Instances details

Magnify m n b a => Magnify (IdentityT m) (IdentityT n) b a Source # |
Instance details Defined in Control.Lens.Zoom Methods magnify :: ((Functor (Magnified (IdentityT m) c), Contravariant (Magnified (IdentityT m) c)) => LensLike' (Magnified (IdentityT m) c) a b) -> IdentityT m c -> IdentityT n c Source #
Monad m => Magnify (ReaderT b m) (ReaderT a m) b a Source # |
Instance details Defined in Control.Lens.Zoom Methods magnify :: ((Functor (Magnified (ReaderT b m) c), Contravariant (Magnified (ReaderT b m) c)) => LensLike' (Magnified (ReaderT b m) c) a b) -> ReaderT b m c -> ReaderT a m c Source #

Magnify ((->) b :: Type -> Type) ((->) a :: Type -> Type) b a Source #

    magnify = views

Instance details Defined in Control.Lens.Zoom Methods magnify :: ((Functor (Magnified ((->) b) c), Contravariant (Magnified ((->) b) c)) => LensLike' (Magnified ((->) b) c) a b) -> (b -> c) -> a -> c Source #
(Monad m, Monoid w) => Magnify (RWST b w s m) (RWST a w s m) b a Source # |
Instance details Defined in Control.Lens.Zoom Methods magnify :: ((Functor (Magnified (RWST b w s m) c), Contravariant (Magnified (RWST b w s m) c)) => LensLike' (Magnified (RWST b w s m) c) a b) -> RWST b w s m c -> RWST a w s m c Source #
(Monad m, Monoid w) => Magnify (RWST b w s m) (RWST a w s m) b a Source # |
Instance details Defined in Control.Lens.Zoom Methods magnify :: ((Functor (Magnified (RWST b w s m) c), Contravariant (Magnified (RWST b w s m) c)) => LensLike' (Magnified (RWST b w s m) c) a b) -> RWST b w s m c -> RWST a w s m c Source #

class (MonadState s m, MonadState t n) => Zoom m n s t | m -> s, n -> t, m t -> n, n s -> m where Source #

This class allows us to use `zoom` in, changing the `State` supplied by many different `Monad` transformers, potentially quite deep in a `Monad` transformer stack.

Methods

zoom :: LensLike' (Zoomed m c) t s -> m c -> n c infixr 2 Source #

Run a monadic action in a larger `State` than it was defined in, using a `Lens'` or `Traversal'`.

This is commonly used to lift actions in a simpler `State` `Monad` into a `State` `Monad` with a larger `State` type.

When applied to a `Traversal'` over multiple values, the actions for each target are executed sequentially and the results are aggregated.

This can be used to edit pretty much any `Monad` transformer stack with a `State` in it!

    >>> flip State.evalState (a,b) $ zoom _1 $ use id
    a

    >>> flip State.execState (a,b) $ zoom _1 $ id .= c
    (c,b)

    >>> flip State.execState [(a,b),(c,d)] $ zoom traverse $ _2 %= f
    [(a,f b),(c,f d)]

    >>> flip State.runState [(a,b),(c,d)] $ zoom traverse $ _2 <%= f
    (f b <> f d <> mempty,[(a,f b),(c,f d)])

    >>> flip State.evalState (a,b) $ zoom both (use id)
    a <> b

    zoom :: Monad m             => Lens' s t      -> StateT t m a -> StateT s m a
    zoom :: (Monad m, Monoid c) => Traversal' s t -> StateT t m c -> StateT s m c
    zoom :: (Monad m, Monoid w)             => Lens' s t      -> RWST r w t m c -> RWST r w s m c
    zoom :: (Monad m, Monoid w, Monoid c) => Traversal' s t -> RWST r w t m c -> RWST r w s m c
    zoom :: (Monad m, Monoid w, Error e)  => Lens' s t      -> ErrorT e (RWST r w t m) c -> ErrorT e (RWST r w s m) c
    zoom :: (Monad m, Monoid w, Monoid c, Error e) => Traversal' s t -> ErrorT e (RWST r w t m) c -> ErrorT e (RWST r w s m) c
    ...

#### Instances

Instances details

Zoom m n s t => Zoom (MaybeT m) (MaybeT n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (MaybeT m) c) t s -> MaybeT m c -> MaybeT n c Source #
Zoom m n s t => Zoom (ListT m) (ListT n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (ListT m) c) t s -> ListT m c -> ListT n c Source #
Zoom m n s t => Zoom (IdentityT m) (IdentityT n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (IdentityT m) c) t s -> IdentityT m c -> IdentityT n c Source #
Zoom m n s t => Zoom (ExceptT e m) (ExceptT e n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (ExceptT e m) c) t s -> ExceptT e m c -> ExceptT e n c Source #
(Functor f, Zoom m n s t) => Zoom (FreeT f m) (FreeT f n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (FreeT f m) c) t s -> FreeT f m c -> FreeT f n c Source #
(Error e, Zoom m n s t) => Zoom (ErrorT e m) (ErrorT e n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (ErrorT e m) c) t s -> ErrorT e m c -> ErrorT e n c Source #
Zoom m n s t => Zoom (ReaderT e m) (ReaderT e n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (ReaderT e m) c) t s -> ReaderT e m c -> ReaderT e n c Source #
Monad z => Zoom (StateT s z) (StateT t z) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (StateT s z) c) t s -> StateT s z c -> StateT t z c Source #
Monad z => Zoom (StateT s z) (StateT t z) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (StateT s z) c) t s -> StateT s z c -> StateT t z c Source #
(Monoid w, Zoom m n s t) => Zoom (WriterT w m) (WriterT w n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (WriterT w m) c) t s -> WriterT w m c -> WriterT w n c Source #
(Monoid w, Zoom m n s t) => Zoom (WriterT w m) (WriterT w n) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (WriterT w m) c) t s -> WriterT w m c -> WriterT w n c Source #
(Monoid w, Monad z) => Zoom (RWST r w s z) (RWST r w t z) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (RWST r w s z) c) t s -> RWST r w s z c -> RWST r w t z c Source #
(Monoid w, Monad z) => Zoom (RWST r w s z) (RWST r w t z) s t Source # |
Instance details Defined in Control.Lens.Zoom Methods zoom :: LensLike' (Zoomed (RWST r w s z) c) t s -> RWST r w s z c -> RWST r w t z c Source #

type family Magnified (m :: * -> *) :: * -> * -> * Source #

This type family is used by `Magnify` to describe the common effect type.

#### Instances

Instances details

type Magnified (IdentityT m) Source # |
Instance details Defined in Control.Lens.Zoom type Magnified (IdentityT m) = Magnified m
type Magnified (ReaderT b m) Source # |
Instance details Defined in Control.Lens.Zoom type Magnified (ReaderT b m) = Effect m
type Magnified ((->) b :: Type -> Type) Source # |
Instance details Defined in Control.Lens.Zoom type Magnified ((->) b :: Type -> Type) = Const :: Type -> Type -> Type
type Magnified (RWST a w s m) Source # |
Instance details Defined in Control.Lens.Zoom type Magnified (RWST a w s m) = EffectRWS w s m
type Magnified (RWST a w s m) Source # |
Instance details Defined in Control.Lens.Zoom type Magnified (RWST a w s m) = EffectRWS w s m

type family Zoomed (m :: * -> *) :: * -> * -> * Source #

This type family is used by `Zoom` to describe the common effect type.

#### Instances

Instances details

type Zoomed (MaybeT m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (MaybeT m) = FocusingMay (Zoomed m)
type Zoomed (ListT m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (ListT m) = FocusingOn [] (Zoomed m)
type Zoomed (IdentityT m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (IdentityT m) = Zoomed m
type Zoomed (ExceptT e m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (ExceptT e m) = FocusingErr e (Zoomed m)
type Zoomed (FreeT f m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (FreeT f m) = FocusingFree f m (Zoomed m)
type Zoomed (ErrorT e m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (ErrorT e m) = FocusingErr e (Zoomed m)
type Zoomed (ReaderT e m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (ReaderT e m) = Zoomed m
type Zoomed (StateT s z) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (StateT s z) = Focusing z
type Zoomed (StateT s z) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (StateT s z) = Focusing z
type Zoomed (WriterT w m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (WriterT w m) = FocusingPlus w (Zoomed m)
type Zoomed (WriterT w m) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (WriterT w m) = FocusingPlus w (Zoomed m)
type Zoomed (RWST r w s z) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (RWST r w s z) = FocusingWith w z
type Zoomed (RWST r w s z) Source # |
Instance details Defined in Control.Lens.Zoom type Zoomed (RWST r w s z) = FocusingWith w z

class GPlated1 f g Source #

Minimal complete definition

gplate1'

#### Instances

Instances details

GPlated1 (f :: k -> Type) (V1 :: k -> Type) Source # | ignored
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k0). Traversal' (V1 a) (f a)
GPlated1 (f :: k -> Type) (U1 :: k -> Type) Source # | ignored
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k0). Traversal' (U1 a) (f a)
GPlated1 (f :: k -> Type) (URec a :: k -> Type) Source # | ignored
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a0 :: k0). Traversal' (URec a a0) (f a0)
GPlated1 (f :: k -> Type) (Rec1 g :: k -> Type) Source # | ignored
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k0). Traversal' (Rec1 g a) (f a)
GPlated1 (f :: k -> Type) (Rec1 f :: k -> Type) Source # | match
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k0). Traversal' (Rec1 f a) (f a)
GPlated1 (f :: k -> Type) (K1 i a :: k -> Type) Source # | ignored
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a0 :: k0). Traversal' (K1 i a a0) (f a0)
(GPlated1 f g, GPlated1 f h) => GPlated1 (f :: k -> Type) (g :*: h :: k -> Type) Source # | recursive match
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k0). Traversal' ((g :*: h) a) (f a)
(GPlated1 f g, GPlated1 f h) => GPlated1 (f :: k -> Type) (g :+: h :: k -> Type) Source # | recursive match
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k0). Traversal' ((g :+: h) a) (f a)
(Traversable t, GPlated1 f g) => GPlated1 (f :: k1 -> Type) (t :.: g :: k1 -> Type) Source # | recursive match under outer `Traversable` instance
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k). Traversal' ((t :.: g) a) (f a)
GPlated1 f g => GPlated1 (f :: k -> Type) (M1 i c g :: k -> Type) Source # | recursive match
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k0). Traversal' (M1 i c g a) (f a)
GPlated1 (f :: Type -> Type) Par1 Source # | ignored
Instance details Defined in Control.Lens.Plated Methods gplate1' :: forall (a :: k). Traversal' (Par1 a) (f a)

class GPlated a g Source #

Minimal complete definition

gplate'

#### Instances

Instances details

GPlated a (V1 :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' (V1 p) a
GPlated a (U1 :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' (U1 p) a
GPlated a (URec b :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' (URec b p) a
GPlated a (K1 i b :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' (K1 i b p) a
GPlated a (K1 i a :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' (K1 i a p) a
(GPlated a f, GPlated a g) => GPlated a (f :*: g :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' ((f :*: g) p) a
(GPlated a f, GPlated a g) => GPlated a (f :+: g :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' ((f :+: g) p) a
GPlated a f => GPlated a (M1 i c f :: k -> Type) Source # |
Instance details Defined in Control.Lens.Plated Methods gplate' :: forall (p :: k0). Traversal' (M1 i c f p) a

class Plated a where Source #

A `Plated` type is one where we know how to extract its immediate self-similar children.

Example 1:

    import Control.Applicative
    import Control.Lens
    import Control.Lens.Plated
    import Data.Data
    import Data.Data.Lens (uniplate)

    data Expr
      = Val Int
      | Neg Expr
      | Add Expr Expr
      deriving (Eq,Ord,Show,Read,Data,Typeable)

    instance Plated Expr where
      plate f (Neg e) = Neg <$> f e
      plate f (Add a b) = Add <$> f a <*> f b
      plate _ a = pure a

or

    instance Plated Expr where
      plate = uniplate

Example 2:

    import Control.Applicative
    import Control.Lens
    import Control.Lens.Plated
    import Data.Data
    import Data.Data.Lens (uniplate)

    data Tree a
      = Bin (Tree a) (Tree a)
      | Tip a
      deriving (Eq,Ord,Show,Read,Data,Typeable)

    instance Plated (Tree a) where
      plate f (Bin l r) = Bin <$> f l <*> f r
      plate _ t = pure t

or

    instance Data a => Plated (Tree a) where
      plate = uniplate

Note the big distinction between these two implementations.

The former will only treat children directly in this tree as descendents, the latter will treat trees contained in the values under the tips also as descendants!

When in doubt, pick a `Traversal` and just use the various `...Of` combinators rather than pollute `Plated` with orphan instances!

If you want to find something unplated and non-recursive with `biplate` use the `...OnOf` variant with `ignored`, though those usecases are much better served in most cases by using the existing `Lens` combinators! e.g.

    toListOf biplate ≡ universeOnOf biplate ignored

This same ability to explicitly pass the `Traversal` in question is why there is no analogue to uniplate's `Biplate`.

Moreover, since we can allow custom traversals, we implement reasonable defaults for polymorphic data types, that only `traverse` into themselves, and not their polymorphic arguments.

Minimal complete definition

Nothing

Methods

plate :: Traversal' a a Source #

`Traversal` of the immediate children of this structure.

If you're using GHC 7.2 or newer and your type has a `Data` instance, `plate` will default to `uniplate` and you can choose to not override it with your own definition.

default plate :: Data a => Traversal' a a Source #

#### Instances

Instances details

Plated Exp Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' Exp Exp Source #
Plated Pat Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' Pat Pat Source #
Plated Type Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' Type Type Source #
Plated Dec Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' Dec Dec Source #
Plated Con Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' Con Con Source #
Plated Stmt Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' Stmt Stmt Source #
Plated [a] Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' [a] [a] Source #
Plated (Tree a) Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' (Tree a) (Tree a) Source #
Traversable f => Plated (Cofree f a) Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' (Cofree f a) (Cofree f a) Source #
Traversable f => Plated (F f a) Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' (F f a) (F f a) Source #
Traversable f => Plated (Free f a) Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' (Free f a) (Free f a) Source #
(Traversable f, Traversable m) => Plated (FreeT f m a) Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' (FreeT f m a) (FreeT f m a) Source #
(Traversable f, Traversable w) => Plated (CofreeT f w a) Source # |
Instance details Defined in Control.Lens.Plated Methods plate :: Traversal' (CofreeT f w a) (CofreeT f w a) Source #

deep :: (Conjoined p, Applicative f, Plated s) => Traversing p f s s a b -> Over p f s s a b Source #

Try to apply a traversal to all transitive descendants of a `Plated` container, but do not recurse through matching descendants.

    deep :: Plated s => Fold s a                 -> Fold s a
    deep :: Plated s => IndexedFold s a          -> IndexedFold s a
    deep :: Plated s => Traversal s s a b        -> Traversal s s a b
    deep :: Plated s => IndexedTraversal s s a b -> IndexedTraversal s s a b

children :: Plated a => a -> [a] Source #

Extract the immediate descendants of a `Plated` container.

    children ≡ toListOf plate

rewrite :: Plated a => (a -> Maybe a) -> a -> a Source #

Rewrite by applying a rule everywhere you can. Ensures that the rule cannot be applied anywhere in the result:

    propRewrite r x = all (isNothing . r) (universe (rewrite r x))

Usually `transform` is more appropriate, but `rewrite` can give better compositionality. Given two single transformations `f` and `g`, you can construct `\a -> f a `<|>` g a` which performs both rewrites until a fixed point.

rewriteOf :: ASetter a b a b -> (b -> Maybe a) -> a -> b Source #

Rewrite by applying a rule everywhere you can. Ensures that the rule cannot be applied anywhere in the result:

    propRewriteOf l r x = all (isNothing . r) (universeOf l (rewriteOf l r x))

Usually `transformOf` is more appropriate, but `rewriteOf` can give better compositionality. Given two single transformations `f` and `g`, you can construct `\a -> f a `<|>` g a` which performs both rewrites until a fixed point.

    rewriteOf :: Iso' a a       -> (a -> Maybe a) -> a -> a
    rewriteOf :: Lens' a a      -> (a -> Maybe a) -> a -> a
    rewriteOf :: Traversal' a a -> (a -> Maybe a) -> a -> a
    rewriteOf :: Setter' a a    -> (a -> Maybe a) -> a -> a

rewriteOn :: Plated a => ASetter s t a a -> (a -> Maybe a) -> s -> t Source #

Rewrite recursively over part of a larger structure.

    rewriteOn :: Plated a => Iso' s a       -> (a -> Maybe a) -> s -> s
    rewriteOn :: Plated a => Lens' s a      -> (a -> Maybe a) -> s -> s
    rewriteOn :: Plated a => Traversal' s a -> (a -> Maybe a) -> s -> s
    rewriteOn :: Plated a => ASetter' s a   -> (a -> Maybe a) -> s -> s

rewriteOnOf :: ASetter s t a b -> ASetter a b a b -> (b -> Maybe a) -> s -> t Source #

Rewrite recursively over part of a larger structure using a specified `Setter`.

    rewriteOnOf :: Iso' s a       -> Iso' a a       -> (a -> Maybe a) -> s -> s
    rewriteOnOf :: Lens' s a      -> Lens' a a      -> (a -> Maybe a) -> s -> s
    rewriteOnOf :: Traversal' s a -> Traversal' a a -> (a -> Maybe a) -> s -> s
    rewriteOnOf :: Setter' s a    -> Setter' a a    -> (a -> Maybe a) -> s -> s

rewriteM :: (Monad m, Plated a) => (a -> m (Maybe a)) -> a -> m a Source #

Rewrite by applying a monadic rule everywhere you can. Ensures that the rule cannot be applied anywhere in the result.

rewriteMOf :: Monad m => LensLike (WrappedMonad m) a b a b -> (b -> m (Maybe a)) -> a -> m b Source #

Rewrite by applying a monadic rule everywhere you recursing with a user-specified `Traversal`. Ensures that the rule cannot be applied anywhere in the result.

rewriteMOn :: (Monad m, Plated a) => LensLike (WrappedMonad m) s t a a -> (a -> m (Maybe a)) -> s -> m t Source #

Rewrite by applying a monadic rule everywhere inside of a structure located by a user-specified `Traversal`. Ensures that the rule cannot be applied anywhere in the result.

rewriteMOnOf :: Monad m => LensLike (WrappedMonad m) s t a b -> LensLike (WrappedMonad m) a b a b -> (b -> m (Maybe a)) -> s -> m t Source #

Rewrite by applying a monadic rule everywhere inside of a structure located by a user-specified `Traversal`, using a user-specified `Traversal` for recursion. Ensures that the rule cannot be applied anywhere in the result.

universe :: Plated a => a -> [a] Source #

Retrieve all of the transitive descendants of a `Plated` container, including itself.

universeOf :: Getting [a] a a -> a -> [a] Source #

Given a `Fold` that knows how to locate immediate children, retrieve all of the transitive descendants of a node, including itself.

    universeOf :: Fold a a -> a -> [a]

universeOn :: Plated a => Getting [a] s a -> s -> [a] Source #

Given a `Fold` that knows how to find `Plated` parts of a container retrieve them and all of their descendants, recursively.

universeOnOf :: Getting [a] s a -> Getting [a] a a -> s -> [a] Source #

Given a `Fold` that knows how to locate immediate children, retrieve all of the transitive descendants of a node, including itself that lie in a region indicated by another `Fold`.

    toListOf l ≡ universeOnOf l ignored

cosmos :: Plated a => Fold a a Source #

Fold over all transitive descendants of a `Plated` container, including itself.

cosmosOf :: (Applicative f, Contravariant f) => LensLike' f a a -> LensLike' f a a Source #

Given a `Fold` that knows how to locate immediate children, fold all of the transitive descendants of a node, including itself.

    cosmosOf :: Fold a a -> Fold a a

cosmosOn :: (Applicative f, Contravariant f, Plated a) => LensLike' f s a -> LensLike' f s a Source #

Given a `Fold` that knows how to find `Plated` parts of a container fold them and all of their descendants, recursively.

    cosmosOn :: Plated a => Fold s a -> Fold s a

cosmosOnOf :: (Applicative f, Contravariant f) => LensLike' f s a -> LensLike' f a a -> LensLike' f s a Source #

Given a `Fold` that knows how to locate immediate children, fold all of the transitive descendants of a node, including itself that lie in a region indicated by another `Fold`.

    cosmosOnOf :: Fold s a -> Fold a a -> Fold s a

transform :: Plated a => (a -> a) -> a -> a Source #

Transform every element in the tree, in a bottom-up manner.

For example, replacing negative literals with literals:

    negLits = transform $ \x -> case x of
      Neg (Lit i) -> Lit (negate i)
      _           -> x

transformOn :: Plated a => ASetter s t a a -> (a -> a) -> s -> t Source #

Transform every element in the tree in a bottom-up manner over a region indicated by a `Setter`.

    transformOn :: Plated a => Traversal' s a -> (a -> a) -> s -> s
    transformOn :: Plated a => Setter' s a    -> (a -> a) -> s -> s

transformOf :: ASetter a b a b -> (b -> b) -> a -> b Source #

Transform every element by recursively applying a given `Setter` in a bottom-up manner.

    transformOf :: Traversal' a a -> (a -> a) -> a -> a
    transformOf :: Setter' a a    -> (a -> a) -> a -> a

transformOnOf :: ASetter s t a b -> ASetter a b a b -> (b -> b) -> s -> t Source #

Transform every element in a region indicated by a `Setter` by recursively applying another `Setter` in a bottom-up manner.

    transformOnOf :: Setter' s a -> Traversal' a a -> (a -> a) -> s -> s
    transformOnOf :: Setter' s a -> Setter' a a    -> (a -> a) -> s -> s

transformM :: (Monad m, Plated a) => (a -> m a) -> a -> m a Source #

Transform every element in the tree, in a bottom-up manner, monadically.

transformMOn :: (Monad m, Plated a) => LensLike (WrappedMonad m) s t a a -> (a -> m a) -> s -> m t Source #

Transform every element in the tree in a region indicated by a supplied `Traversal`, in a bottom-up manner, monadically.

    transformMOn :: (Monad m, Plated a) => Traversal' s a -> (a -> m a) -> s -> m s

transformMOf :: Monad m => LensLike (WrappedMonad m) a b a b -> (b -> m b) -> a -> m b Source #

Transform every element in a tree using a user supplied `Traversal` in a bottom-up manner with a monadic effect.

    transformMOf :: Monad m => Traversal' a a -> (a -> m a) -> a -> m a

transformMOnOf :: Monad m => LensLike (WrappedMonad m) s t a b -> LensLike (WrappedMonad m) a b a b -> (b -> m b) -> s -> m t Source #

Transform every element in a tree that lies in a region indicated by a supplied `Traversal`, walking with a user supplied `Traversal` in a bottom-up manner with a monadic effect.

    transformMOnOf :: Monad m => Traversal' s a -> Traversal' a a -> (a -> m a) -> s -> m s

contexts :: Plated a => a -> [Context a a a] Source #

Return a list of all of the editable contexts for every location in the structure, recursively.

    propUniverse x = universe x == map pos (contexts x)
    propId x = all (== x) [extract w | w <- contexts x]

    contexts ≡ contextsOf plate

contextsOf :: ATraversal' a a -> a -> [Context a a a] Source #

Return a list of all of the editable contexts for every location in the structure, recursively, using a user-specified `Traversal` to walk each layer.

    propUniverse l x = universeOf l x == map pos (contextsOf l x)
    propId l x = all (== x) [extract w | w <- contextsOf l x]

    contextsOf :: Traversal' a a -> a -> [Context a a a]

contextsOn :: Plated a => ATraversal s t a a -> s -> [Context a a t] Source #

Return a list of all of the editable contexts for every location in the structure in an areas indicated by a user supplied `Traversal`, recursively using `plate`.

    contextsOn b ≡ contextsOnOf b plate

    contextsOn :: Plated a => Traversal' s a -> s -> [Context a a s]

contextsOnOf :: ATraversal s t a a -> ATraversal' a a -> s -> [Context a a t] Source #

Return a list of all of the editable contexts for every location in the structure in an areas indicated by a user supplied `Traversal`, recursively using another user-supplied `Traversal` to walk each layer.

    contextsOnOf :: Traversal' s a -> Traversal' a a -> s -> [Context a a s]

holes :: Plated a => a -> [Pretext (->) a a a] Source #

The one-level version of `context`. This extracts a list of the immediate children as editable contexts.

Given a context you can use `pos` to see the values, `peek` at what the structure would be like with an edited result, or simply `extract` the original structure.

    propChildren x = children l x == map pos (holes l x)
    propId x = all (== x) [extract w | w <- holes l x]

    holes = holesOf plate

holesOn :: Conjoined p => Over p (Bazaar p a a) s t a a -> s -> [Pretext p a a t] Source #

An alias for `holesOf`, provided for consistency with the other combinators.

    holesOn ≡ holesOf

    holesOn :: Iso' s a                -> s -> [Pretext (->) a a s]
    holesOn :: Lens' s a               -> s -> [Pretext (->) a a s]
    holesOn :: Traversal' s a          -> s -> [Pretext (->) a a s]
    holesOn :: IndexedLens' i s a      -> s -> [Pretext (Indexed i) a a s]
    holesOn :: IndexedTraversal' i s a -> s -> [Pretext (Indexed i) a a s]

holesOnOf :: Conjoined p => LensLike (Bazaar p r r) s t a b -> Over p (Bazaar p r r) a b r r -> s -> [Pretext p r r t] Source #

Extract one level of `holes` from a container in a region specified by one `Traversal`, using another.

    holesOnOf b l ≡ holesOf (b . l)

    holesOnOf :: Iso' s a       -> Iso' a a                -> s -> [Pretext (->) a a s]
    holesOnOf :: Lens' s a      -> Lens' a a               -> s -> [Pretext (->) a a s]
    holesOnOf :: Traversal' s a -> Traversal' a a          -> s -> [Pretext (->) a a s]
    holesOnOf :: Lens' s a      -> IndexedLens' i a a      -> s -> [Pretext (Indexed i) a a s]
    holesOnOf :: Traversal' s a -> IndexedTraversal' i a a -> s -> [Pretext (Indexed i) a a s]

paraOf :: Getting (Endo [a]) a a -> (a -> [r] -> r) -> a -> r Source #

Perform a fold-like computation on each value, technically a paramorphism.

    paraOf :: Fold a a -> (a -> [r] -> r) -> a -> r

para :: Plated a => (a -> [r] -> r) -> a -> r Source #

Perform a fold-like computation on each value, technically a paramorphism.

    para ≡ paraOf plate

composOpFold :: Plated a => b -> (b -> b -> b) -> (a -> b) -> a -> b Source #

Fold the immediate children of a `Plated` container.

    composOpFold z c f = foldrOf plate (c . f) z

parts :: Plated a => Lens' a [a] Source #

The original `uniplate` combinator, implemented in terms of `Plated` as a `Lens`.

    parts ≡ partsOf plate

The resulting `Lens` is safer to use as it ignores 'over-application' and deals gracefully with under-application, but it is only a proper `Lens` if you don't change the list `length`!

gplate :: (Generic a, GPlated a (Rep a)) => Traversal' a a Source #

Implement `plate` operation for a type using its `Generic` instance.

gplate1 :: (Generic1 f, GPlated1 f (Rep1 f)) => Traversal' (f a) (f a) Source #

Implement `plate` operation for a type using its `Generic1` instance.

class Each s t a b | s -> a, t -> b, s b -> t, t a -> s where Source #

Extract `each` element of a (potentially monomorphic) container.

Notably, when applied to a tuple, this generalizes `both` to arbitrary homogeneous tuples.

    >>> (1,2,3) & each *~ 10
    (10,20,30)

It can also be used on monomorphic containers like `Text` or `ByteString`.

    >>> over each Char.toUpper ("hello"^.Text.packed)
    "HELLO"

    >>> ("hello","world") & each.each %~ Char.toUpper
    ("HELLO","WORLD")

Minimal complete definition

Nothing

Methods

each :: Traversal s t a b Source #

default each :: (Traversable g, s ~ g a, t ~ g b) => Traversal s t a b Source #

#### Instances

Instances details

(a ~ Char, b ~ Char) => Each Text Text a b Source #

    each :: Traversal Text Text Char Char

Instance details Defined in Control.Lens.Each Methods each :: Traversal Text Text a b Source #

(a ~ Word8, b ~ Word8) => Each ByteString ByteString a b Source #

    each :: Traversal ByteString ByteString Word8 Word8

Instance details Defined in Control.Lens.Each Methods each :: Traversal ByteString ByteString a b Source #

(a ~ Word8, b ~ Word8) => Each ByteString ByteString a b Source #

    each :: Traversal ByteString ByteString Word8 Word8

Instance details Defined in Control.Lens.Each Methods each :: Traversal ByteString ByteString a b Source #

(a ~ Char, b ~ Char) => Each Text Text a b Source #

    each :: Traversal Text Text Char Char

Instance details Defined in Control.Lens.Each Methods each :: Traversal Text Text a b Source #

Each [a] [b] a b Source #

    each :: Traversal [a] [b] a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal [a] [b] a b Source #

Each (Maybe a) (Maybe b) a b Source #

    each :: Traversal (Maybe a) (Maybe b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Maybe a) (Maybe b) a b Source #

Each (Identity a) (Identity b) a b Source #

    each :: Traversal (Identity a) (Identity b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Identity a) (Identity b) a b Source #

Each (Complex a) (Complex b) a b Source #

    each :: (RealFloat a, RealFloat b) => Traversal (Complex a) (Complex b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Complex a) (Complex b) a b Source #

Each (NonEmpty a) (NonEmpty b) a b Source #

    each :: Traversal (NonEmpty a) (NonEmpty b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (NonEmpty a) (NonEmpty b) a b Source #

Each (IntMap a) (IntMap b) a b Source #

    each :: Traversal (Map c a) (Map c b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (IntMap a) (IntMap b) a b Source #

(Unbox a, Unbox b) => Each (Vector a) (Vector b) a b Source #

    each :: (Unbox a, Unbox b) => Traversal (Vector a) (Vector b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Vector a) (Vector b) a b Source #

(Storable a, Storable b) => Each (Vector a) (Vector b) a b Source #

    each :: (Storable a, Storable b) => Traversal (Vector a) (Vector b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Vector a) (Vector b) a b Source #

(Prim a, Prim b) => Each (Vector a) (Vector b) a b Source #

    each :: (Prim a, Prim b) => Traversal (Vector a) (Vector b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Vector a) (Vector b) a b Source #

Each (Vector a) (Vector b) a b Source #

    each :: Traversal (Vector a) (Vector b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Vector a) (Vector b) a b Source #

Each (Tree a) (Tree b) a b Source #

    each :: Traversal (Tree a) (Tree b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Tree a) (Tree b) a b Source #

Each (Seq a) (Seq b) a b Source #

    each :: Traversal (Seq a) (Seq b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Seq a) (Seq b) a b Source #

(a ~ a', b ~ b') => Each (Either a a') (Either b b') a b Source #

    each :: Traversal (Either a a) (Either b b) a b

Since: 4.18

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Either a a') (Either b b') a b Source #

(a ~ a', b ~ b') => Each (a, a') (b, b') a b Source #

    each :: Traversal (a,a) (b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a') (b, b') a b Source #

c ~ d => Each (HashMap c a) (HashMap d b) a b Source #

    each :: Traversal (HashMap c a) (HashMap c b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (HashMap c a) (HashMap d b) a b Source #

(Ix i, i ~ j) => Each (Array i a) (Array j b) a b Source #

    each :: Ix i => Traversal (Array i a) (Array i b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Array i a) (Array j b) a b Source #

c ~ d => Each (Map c a) (Map d b) a b Source #

    each :: Traversal (Map c a) (Map c b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (Map c a) (Map d b) a b Source #

(Ix i, IArray UArray a, IArray UArray b, i ~ j) => Each (UArray i a) (UArray j b) a b Source #

    each :: (Ix i, IArray UArray a, IArray UArray b) => Traversal (Array i a) (Array i b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (UArray i a) (UArray j b) a b Source #

(a ~ a2, a ~ a3, b ~ b2, b ~ b3) => Each (a, a2, a3) (b, b2, b3) a b Source #

    each :: Traversal (a,a,a) (b,b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a2, a3) (b, b2, b3) a b Source #

(a ~ a2, a ~ a3, a ~ a4, b ~ b2, b ~ b3, b ~ b4) => Each (a, a2, a3, a4) (b, b2, b3, b4) a b Source #

    each :: Traversal (a,a,a,a) (b,b,b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a2, a3, a4) (b, b2, b3, b4) a b Source #

(a ~ a2, a ~ a3, a ~ a4, a ~ a5, b ~ b2, b ~ b3, b ~ b4, b ~ b5) => Each (a, a2, a3, a4, a5) (b, b2, b3, b4, b5) a b Source #

    each :: Traversal (a,a,a,a,a) (b,b,b,b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a2, a3, a4, a5) (b, b2, b3, b4, b5) a b Source #

(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, b ~ b2, b ~ b3, b ~ b4, b ~ b5, b ~ b6) => Each (a, a2, a3, a4, a5, a6) (b, b2, b3, b4, b5, b6) a b Source #

    each :: Traversal (a,a,a,a,a,a) (b,b,b,b,b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a2, a3, a4, a5, a6) (b, b2, b3, b4, b5, b6) a b Source #

(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7, b ~ b2, b ~ b3, b ~ b4, b ~ b5, b ~ b6, b ~ b7) => Each (a, a2, a3, a4, a5, a6, a7) (b, b2, b3, b4, b5, b6, b7) a b Source #

    each :: Traversal (a,a,a,a,a,a,a) (b,b,b,b,b,b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a2, a3, a4, a5, a6, a7) (b, b2, b3, b4, b5, b6, b7) a b Source #

(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7, a ~ a8, b ~ b2, b ~ b3, b ~ b4, b ~ b5, b ~ b6, b ~ b7, b ~ b8) => Each (a, a2, a3, a4, a5, a6, a7, a8) (b, b2, b3, b4, b5, b6, b7, b8) a b Source #

    each :: Traversal (a,a,a,a,a,a,a,a) (b,b,b,b,b,b,b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a2, a3, a4, a5, a6, a7, a8) (b, b2, b3, b4, b5, b6, b7, b8) a b Source #

(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7, a ~ a8, a ~ a9, b ~ b2, b ~ b3, b ~ b4, b ~ b5, b ~ b6, b ~ b7, b ~ b8, b ~ b9) => Each (a, a2, a3, a4, a5, a6, a7, a8, a9) (b, b2, b3, b4, b5, b6, b7, b8, b9) a b Source #

    each :: Traversal (a,a,a,a,a,a,a,a,a) (b,b,b,b,b,b,b,b,b) a b

Instance details Defined in Control.Lens.Each Methods each :: Traversal (a, a2, a3, a4, a5, a6, a7, a8, a9) (b, b2, b3, b4, b5, b6, b7, b8, b9) a b Source #

class Ixed m => At m where Source #

`At` provides a `Lens` that can be used to read, write or delete the value associated with a key in a `Map`-like container on an ad hoc basis.

An instance of `At` should satisfy:

    ix k ≡ at k . traverse

Methods

at :: Index m -> Lens' m (Maybe (IxValue m)) Source #

    >>> Map.fromList [(1,"world")] ^.at 1
    Just "world"

    >>> at 1 ?~ "hello" $ Map.empty
    fromList [(1,"hello")]

Note: `Map`-like containers form a reasonable instance, but not `Array`-like ones, where you cannot satisfy the `Lens` laws.

#### Instances

Instances details

At IntSet Source # |
Instance details Defined in Control.Lens.At Methods at :: Index IntSet -> Lens' IntSet (Maybe (IxValue IntSet)) Source #
At (Maybe a) Source # |
Instance details Defined in Control.Lens.At Methods at :: Index (Maybe a) -> Lens' (Maybe a) (Maybe (IxValue (Maybe a))) Source #
At (IntMap a) Source # |
Instance details Defined in Control.Lens.At Methods at :: Index (IntMap a) -> Lens' (IntMap a) (Maybe (IxValue (IntMap a))) Source #
(Eq k, Hashable k) => At (HashSet k) Source # |
Instance details Defined in Control.Lens.At Methods at :: Index (HashSet k) -> Lens' (HashSet k) (Maybe (IxValue (HashSet k))) Source #
Ord k => At (Set k) Source # |
Instance details Defined in Control.Lens.At Methods at :: Index (Set k) -> Lens' (Set k) (Maybe (IxValue (Set k))) Source #
(Eq k, Hashable k) => At (HashMap k a) Source # |
Instance details Defined in Control.Lens.At Methods at :: Index (HashMap k a) -> Lens' (HashMap k a) (Maybe (IxValue (HashMap k a))) Source #
Ord k => At (Map k a) Source # |
Instance details Defined in Control.Lens.At Methods at :: Index (Map k a) -> Lens' (Map k a) (Maybe (IxValue (Map k a))) Source #

class Ixed m where Source #

Provides a simple `Traversal` lets you `traverse` the value at a given key in a `Map` or element at an ordinal position in a list or `Seq`.

Minimal complete definition

Nothing

Methods

ix :: Index m -> Traversal' m (IxValue m) Source #

NB: Setting the value of this `Traversal` will only set the value in `at` if it is already present.

If you want to be able to insert missing values, you want `at`.

    >>> Seq.fromList [a,b,c,d] & ix 2 %~ f
    fromList [a,b,f c,d]

    >>> Seq.fromList [a,b,c,d] & ix 2 .~ e
    fromList [a,b,e,d]

    >>> Seq.fromList [a,b,c,d] ^? ix 2
    Just c

    >>> Seq.fromList [] ^? ix 2
    Nothing

default ix :: (Applicative f, At m) => Index m -> LensLike' f m (IxValue m) Source #

#### Instances

Instances details

Ixed Text Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index Text -> Traversal' Text (IxValue Text) Source #
Ixed ByteString Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index ByteString -> Traversal' ByteString (IxValue ByteString) Source #
Ixed ByteString Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index ByteString -> Traversal' ByteString (IxValue ByteString) Source #
Ixed Text Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index Text -> Traversal' Text (IxValue Text) Source #
Ixed IntSet Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index IntSet -> Traversal' IntSet (IxValue IntSet) Source #
Ixed [a] Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index [a] -> Traversal' [a] (IxValue [a]) Source #
Ixed (Maybe a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Maybe a) -> Traversal' (Maybe a) (IxValue (Maybe a)) Source #
Ixed (Identity a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Identity a) -> Traversal' (Identity a) (IxValue (Identity a)) Source #
Ixed (NonEmpty a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (NonEmpty a) -> Traversal' (NonEmpty a) (IxValue (NonEmpty a)) Source #
Ixed (IntMap a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (IntMap a) -> Traversal' (IntMap a) (IxValue (IntMap a)) Source #
(Eq k, Hashable k) => Ixed (HashSet k) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (HashSet k) -> Traversal' (HashSet k) (IxValue (HashSet k)) Source #
Unbox a => Ixed (Vector a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Vector a) -> Traversal' (Vector a) (IxValue (Vector a)) Source #
Storable a => Ixed (Vector a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Vector a) -> Traversal' (Vector a) (IxValue (Vector a)) Source #
Prim a => Ixed (Vector a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Vector a) -> Traversal' (Vector a) (IxValue (Vector a)) Source #
Ixed (Vector a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Vector a) -> Traversal' (Vector a) (IxValue (Vector a)) Source #
Ixed (Tree a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Tree a) -> Traversal' (Tree a) (IxValue (Tree a)) Source #
Ixed (Seq a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Seq a) -> Traversal' (Seq a) (IxValue (Seq a)) Source #
Ord k => Ixed (Set k) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Set k) -> Traversal' (Set k) (IxValue (Set k)) Source #
Eq e => Ixed (e -> a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (e -> a) -> Traversal' (e -> a) (IxValue (e -> a)) Source #
a ~ a2 => Ixed (a, a2) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2) -> Traversal' (a, a2) (IxValue (a, a2)) Source #
(Eq k, Hashable k) => Ixed (HashMap k a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (HashMap k a) -> Traversal' (HashMap k a) (IxValue (HashMap k a)) Source #

Ix i => Ixed (Array i e) Source #

    arr ! i ≡ arr ^. ix i
    arr // [(i,e)] ≡ ix i .~ e $ arr

Instance details Defined in Control.Lens.At Methods ix :: Index (Array i e) -> Traversal' (Array i e) (IxValue (Array i e)) Source #
Ord k => Ixed (Map k a) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (Map k a) -> Traversal' (Map k a) (IxValue (Map k a)) Source #

(IArray UArray e, Ix i) => Ixed (UArray i e) Source #

    arr ! i ≡ arr ^. ix i
    arr // [(i,e)] ≡ ix i .~ e $ arr

Instance details Defined in Control.Lens.At Methods ix :: Index (UArray i e) -> Traversal' (UArray i e) (IxValue (UArray i e)) Source #
(a ~ a2, a ~ a3) => Ixed (a, a2, a3) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2, a3) -> Traversal' (a, a2, a3) (IxValue (a, a2, a3)) Source #
(a ~ a2, a ~ a3, a ~ a4) => Ixed (a, a2, a3, a4) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4) -> Traversal' (a, a2, a3, a4) (IxValue (a, a2, a3, a4)) Source #
(a ~ a2, a ~ a3, a ~ a4, a ~ a5) => Ixed (a, a2, a3, a4, a5) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5) -> Traversal' (a, a2, a3, a4, a5) (IxValue (a, a2, a3, a4, a5)) Source #
(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6) => Ixed (a, a2, a3, a4, a5, a6) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6) -> Traversal' (a, a2, a3, a4, a5, a6) (IxValue (a, a2, a3, a4, a5, a6)) Source #
(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7) => Ixed (a, a2, a3, a4, a5, a6, a7) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6, a7) -> Traversal' (a, a2, a3, a4, a5, a6, a7) (IxValue (a, a2, a3, a4, a5, a6, a7)) Source #
(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7, a ~ a8) => Ixed (a, a2, a3, a4, a5, a6, a7, a8) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6, a7, a8) -> Traversal' (a, a2, a3, a4, a5, a6, a7, a8) (IxValue (a, a2, a3, a4, a5, a6, a7, a8)) Source #
(a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7, a ~ a8, a ~ a9) => Ixed (a, a2, a3, a4, a5, a6, a7, a8, a9) Source # |
Instance details Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6, a7, a8, a9) -> Traversal' (a, a2, a3, a4, a5, a6, a7, a8, a9) (IxValue (a, a2, a3, a4, a5, a6, a7, a8, a9)) Source #

type family IxValue (m :: *) :: * Source #

This provides a common notion of a value at an index that is shared by both `Ixed` and `At`.

#### Instances

Instances details

type IxValue Text Source # |
Instance details Defined in Control.Lens.At type IxValue Text = Char
type IxValue ByteString Source # |
Instance details Defined in Control.Lens.At type IxValue ByteString = Word8
type IxValue ByteString Source # |
Instance details Defined in Control.Lens.At type IxValue ByteString = Word8
type IxValue Text Source # |
Instance details Defined in Control.Lens.At type IxValue Text = Char
type IxValue IntSet Source # |
Instance details Defined in Control.Lens.At type IxValue IntSet = ()
type IxValue [a] Source # |
Instance details Defined in Control.Lens.At type IxValue [a] = a
type IxValue (Maybe a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Maybe a) = a
type IxValue (Identity a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Identity a) = a
type IxValue (NonEmpty a) Source # |
Instance details Defined in Control.Lens.At type IxValue (NonEmpty a) = a
type IxValue (IntMap a) Source # |
Instance details Defined in Control.Lens.At type IxValue (IntMap a) = a
type IxValue (HashSet k) Source # |
Instance details Defined in Control.Lens.At type IxValue (HashSet k) = ()
type IxValue (Vector a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Vector a) = a
type IxValue (Vector a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Vector a) = a
type IxValue (Vector a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Vector a) = a
type IxValue (Vector a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Vector a) = a
type IxValue (Tree a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Tree a) = a
type IxValue (Seq a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Seq a) = a
type IxValue (Set k) Source # |
Instance details Defined in Control.Lens.At type IxValue (Set k) = ()
type IxValue (e -> a) Source # |
Instance details Defined in Control.Lens.At type IxValue (e -> a) = a

type IxValue (a, a2) Source #

    ix :: Int -> Traversal' (a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2) = a
type IxValue (HashMap k a) Source # |
Instance details Defined in Control.Lens.At type IxValue (HashMap k a) = a
type IxValue (Array i e) Source # |
Instance details Defined in Control.Lens.At type IxValue (Array i e) = e
type IxValue (Map k a) Source # |
Instance details Defined in Control.Lens.At type IxValue (Map k a) = a
type IxValue (UArray i e) Source # |
Instance details Defined in Control.Lens.At type IxValue (UArray i e) = e

type IxValue (a, a2, a3) Source #

    ix :: Int -> Traversal' (a,a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2, a3) = a

type IxValue (a, a2, a3, a4) Source #

    ix :: Int -> Traversal' (a,a,a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2, a3, a4) = a

type IxValue (a, a2, a3, a4, a5) Source #

    ix :: Int -> Traversal' (a,a,a,a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5) = a

type IxValue (a, a2, a3, a4, a5, a6) Source #

    ix :: Int -> Traversal' (a,a,a,a,a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6) = a

type IxValue (a, a2, a3, a4, a5, a6, a7) Source #

    ix :: Int -> Traversal' (a,a,a,a,a,a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6, a7) = a

type IxValue (a, a2, a3, a4, a5, a6, a7, a8) Source #

    ix :: Int -> Traversal' (a,a,a,a,a,a,a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6, a7, a8) = a

type IxValue (a, a2, a3, a4, a5, a6, a7, a8, a9) Source #

    ix :: Int -> Traversal' (a,a,a,a,a,a,a,a,a) a

Instance details Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6, a7, a8, a9) = a

class Contains m where Source #

This class provides a simple `Lens` that lets you view (and modify) information about whether or not a container contains a given `Index`.

Methods

contains :: Index m -> Lens' m Bool Source #

    >>> IntSet.fromList [1,2,3,4] ^. contains 3
    True

    >>> IntSet.fromList [1,2,3,4] ^. contains 5
    False

    >>> IntSet.fromList [1,2,3,4] & contains 3 .~ False
    fromList [1,2,4]

#### Instances

Instances details

Contains IntSet Source # |
Instance details Defined in Control.Lens.At Methods contains :: Index IntSet -> Lens' IntSet Bool Source #
(Eq a, Hashable a) => Contains (HashSet a) Source # |
Instance details Defined in Control.Lens.At Methods contains :: Index (HashSet a) -> Lens' (HashSet a) Bool Source #
Ord a => Contains (Set a) Source # |
Instance details Defined in Control.Lens.At Methods contains :: Index (Set a) -> Lens' (Set a) Bool Source #

type family Index (s :: *) :: * Source #

#### Instances

Instances details

type Index Text Source # |
Instance details Defined in Control.Lens.At type Index Text = Int64
type Index ByteString Source # |
Instance details Defined in Control.Lens.At type Index ByteString = Int
type Index ByteString Source # |
Instance details Defined in Control.Lens.At type Index ByteString = Int64
type Index Text Source # |
Instance details Defined in Control.Lens.At type Index Text = Int
type Index IntSet Source # |
Instance details Defined in Control.Lens.At type Index IntSet = Int
type Index [a] Source # |
Instance details Defined in Control.Lens.At type Index [a] = Int
type Index (Maybe a) Source # |
Instance details Defined in Control.Lens.At type Index (Maybe a) = ()
type Index (Identity a) Source # |
Instance details Defined in Control.Lens.At type Index (Identity a) = ()
type Index (Complex a) Source # |
Instance details Defined in Control.Lens.At type Index (Complex a) = Int
type Index (NonEmpty a) Source # |
Instance details Defined in Control.Lens.At type Index (NonEmpty a) = Int
type Index (IntMap a) Source # |
Instance details Defined in Control.Lens.At type Index (IntMap a) = Int
type Index (HashSet a) Source # |
Instance details Defined in Control.Lens.At type Index (HashSet a) = a
type Index (Vector a) Source # |
Instance details Defined in Control.Lens.At type Index (Vector a) = Int
type Index (Vector a) Source # |
Instance details Defined in Control.Lens.At type Index (Vector a) = Int
type Index (Vector a) Source # |
Instance details Defined in Control.Lens.At type Index (Vector a) = Int
type Index (Vector a) Source # |
Instance details Defined in Control.Lens.At type Index (Vector a) = Int
type Index (Tree a) Source # |
Instance details Defined in Control.Lens.At type Index (Tree a) = [Int]
type Index (Seq a) Source # |
Instance details Defined in Control.Lens.At type Index (Seq a) = Int
type Index (Set a) Source # |
Instance details Defined in Control.Lens.At type Index (Set a) = a
type Index (e -> a) Source # |
Instance details Defined in Control.Lens.At type Index (e -> a) = e
type Index (a, b) Source # |
Instance details Defined in Control.Lens.At type Index (a, b) = Int
type Index (HashMap k a) Source # |
Instance details Defined in Control.Lens.At type Index (HashMap k a) = k
type Index (Array i e) Source # |
Instance details Defined in Control.Lens.At type Index (Array i e) = i
type Index (Map k a) Source # |
Instance details Defined in Control.Lens.At type Index (Map k a) = k
type Index (UArray i e) Source # |
Instance details Defined in Control.Lens.At type Index (UArray i e) = i
type Index (a, b, c) Source # |
Instance details Defined in Control.Lens.At type Index (a, b, c) = Int
type Index (a, b, c, d) Source # |
Instance details Defined in Control.Lens.At type Index (a, b, c, d) = Int
type Index (a, b, c, d, e) Source # |
Instance details Defined in Control.Lens.At type Index (a, b, c, d, e) = Int
type Index (a, b, c, d, e, f) Source # |
Instance details Defined in Control.Lens.At type Index (a, b, c, d, e, f) = Int
type Index (a, b, c, d, e, f, g) Source # |
Instance details Defined in Control.Lens.At type Index (a, b, c, d, e, f, g) = Int
type Index (a, b, c, d, e, f, g, h) Source # |
Instance details Defined in Control.Lens.At type Index (a, b, c, d, e, f, g, h) = Int
type Index (a, b, c, d, e, f, g, h, i) Source # |
Instance details Defined in Control.Lens.At type Index (a, b, c, d, e, f, g, h, i) = Int

icontains :: Contains m => Index m -> IndexedLens' (Index m) m Bool Source #

An indexed version of `contains`.

    >>> IntSet.fromList [1,2,3,4] ^@. icontains 3
    (3,True)

    >>> IntSet.fromList [1,2,3,4] ^@. icontains 5
    (5,False)

    >>> IntSet.fromList [1,2,3,4] & icontains 3 %@~ \i x -> if odd i then not x else x
    fromList [1,2,4]

    >>> IntSet.fromList [1,2,3,4] & icontains 3 %@~ \i x -> if even i then not x else x
    fromList [1,2,3,4]

iix :: Ixed m => Index m -> IndexedTraversal' (Index m) m (IxValue m) Source #

An indexed version of `ix`.

    >>> Seq.fromList [a,b,c,d] & iix 2 %@~ f'
    fromList [a,b,f' 2 c,d]

    >>> Seq.fromList [a,b,c,d] & iix 2 .@~ h
    fromList [a,b,h 2,d]

    >>> Seq.fromList [a,b,c,d] ^@? iix 2
    Just (2,c)

    >>> Seq.fromList [] ^@? iix 2
    Nothing

ixAt :: At m => Index m -> Traversal' m (IxValue m) Source #

A definition of `ix` for types with an `At` instance. This is the default if you don't specify a definition for `ix`.

sans :: At m => Index m -> m -> m Source #

Delete the value associated with a key in a `Map`-like container

    sans k = at k .~ Nothing

iat :: At m => Index m -> IndexedLens' (Index m) m (Maybe (IxValue m)) Source #

An indexed version of `at`.

    >>> Map.fromList [(1,"world")] ^@. iat 1
    (1,Just "world")

    >>> iat 1 %@~ (\i x -> if odd i then Just "hello" else Nothing) $ Map.empty
    fromList [(1,"hello")]

    >>> iat 2 %@~ (\i x -> if odd i then Just "hello" else Nothing) $ Map.empty
    fromList []

makePrisms Source #

Arguments

:: Name | Type constructor name
-> DecsQ |

Generate a `Prism` for each constructor of a data type. Isos generated when possible. Reviews are created for constructors with existentially quantified constructors and GADTs.

e.g.

    data FooBarBaz a
      = Foo Int
      | Bar a
      | Baz Int Char
    makePrisms ''FooBarBaz

will create

    _Foo :: Prism' (FooBarBaz a) Int
    _Bar :: Prism (FooBarBaz a) (FooBarBaz b) a b
    _Baz :: Prism' (FooBarBaz a) (Int, Char)

makeClassyPrisms Source #

Arguments

:: Name | Type constructor name
-> DecsQ |

Generate a `Prism` for each constructor of a data type and combine them into a single class. No Isos are created. Reviews are created for constructors with existentially quantified constructors and GADTs.

e.g.

    data FooBarBaz a
      = Foo Int
      | Bar a
      | Baz Int Char
    makeClassyPrisms ''FooBarBaz

will create

    class AsFooBarBaz s a | s -> a where
      _FooBarBaz :: Prism' s (FooBarBaz a)
      _Foo :: Prism' s Int
      _Bar :: Prism' s a
      _Baz :: Prism' s (Int,Char)

      _Foo = _FooBarBaz . _Foo
      _Bar = _FooBarBaz . _Bar
      _Baz = _FooBarBaz . _Baz

    instance AsFooBarBaz (FooBarBaz a) a

Generate an As class of prisms. Names are selected by prefixing the constructor name with an underscore. Constructors with multiple fields will construct Prisms to tuples of those fields.

In the event that the name of a data type is also the name of one of its constructors, the name of the `Prism` generated for the data type will be prefixed with an extra `_` (if the data type name is prefix) or `.` (if the name is infix) to disambiguate it from the `Prism` for the corresponding constructor. For example, this code:

    data Quux = Quux Int | Fred Bool
    makeClassyPrisms ''Quux

will create:

    class AsQuux s where
      __Quux :: Prism' s Quux -- Data type prism
      _Quux :: Prism' s Int   -- Constructor prism
      _Fred :: Prism' s Bool

      _Quux = __Quux . _Quux
      _Fred = __Quux . _Fred

    instance AsQuux Quux

type ClassyNamer Source #

Arguments

= Name | Name of the data type that lenses are being generated for.
-> Maybe (Name, Name) | Names of the class and the main method it generates, respectively.

The optional rule to create a class and method around a monomorphic data type. If this naming convention is provided, it generates a "classy" lens.

data DefName Source #

Name to give to generated field optics.

Constructors

TopName Name | Simple top-level definiton name
MethodName Name Name | makeFields-style class name and method name

#### Instances

Instances details

Eq DefName Source # |
Instance details Defined in Control.Lens.Internal.FieldTH Methods (==) :: DefName -> DefName -> Bool (/=) :: DefName -> DefName -> Bool
Ord DefName Source # |
Instance details Defined in Control.Lens.Internal.FieldTH Methods compare :: DefName -> DefName -> Ordering (<) :: DefName -> DefName -> Bool (<=) :: DefName -> DefName -> Bool (>) :: DefName -> DefName -> Bool (>=) :: DefName -> DefName -> Bool max :: DefName -> DefName -> DefName min :: DefName -> DefName -> DefName
Show DefName Source # |
Instance details Defined in Control.Lens.Internal.FieldTH Methods showsPrec :: Int -> DefName -> ShowS show :: DefName -> String showList :: [DefName] -> ShowS

type FieldNamer Source #

Arguments

= Name | Name of the data type that lenses are being generated for.
-> [Name] | Names of all fields (including the field being named) in the data type.
-> Name | Name of the field being named.
-> [DefName] | Name(s) of the lens functions. If empty, no lens is created for that field.

The rule to create function names of lenses for data fields.

Although it's sometimes useful, you won't need the first two arguments most of the time.

data LensRules Source #

Rules to construct lenses for data fields.

simpleLenses :: Lens' LensRules Bool Source #

Generate "simple" optics even when type-changing optics are possible. (e.g. `Lens'` instead of `Lens`)

generateSignatures :: Lens' LensRules Bool Source #

Indicate whether or not to supply the signatures for the generated lenses.

Disabling this can be useful if you want to provide a more restricted type signature or if you want to supply hand-written haddocks.

generateUpdateableOptics :: Lens' LensRules Bool Source #

Generate "updateable" optics when `True`. When `False`, `Fold`s will be generated instead of `Traversal`s and `Getter`s will be generated instead of `Lens`es. This mode is intended to be used for types with invariants which must be maintained by "smart" constructors.

generateLazyPatterns :: Lens' LensRules Bool Source #

Generate optics using lazy pattern matches. This can allow fields of an undefined value to be initialized with lenses:

    data Foo = Foo {_x :: Int, _y :: Bool}
      deriving Show

    makeLensesWith (lensRules & generateLazyPatterns .~ True) ''Foo

    > undefined & x .~ 8 & y .~ True
    Foo {_x = 8, _y = True}

The downside of this flag is that it can lead to space-leaks and code-size/compile-time increases when generated for large records. By default this flag is turned off, and strict optics are generated.

When using lazy optics the strict optic can be recovered by composing with `$!`:

    strictOptic = ($!) . lazyOptic

createClass :: Lens' LensRules Bool Source #

Create the class if the constructor is `Simple` and the `lensClass` rule matches.

lensField :: Lens' LensRules FieldNamer Source #

`Lens'` to access the convention for naming fields in our `LensRules`.

lensClass :: Lens' LensRules ClassyNamer Source #

`Lens'` to access the option for naming "classy" lenses.

lensRules :: LensRules Source #

Rules for making fairly simple partial lenses, ignoring the special cases for isomorphisms and traversals, and not making any classes. It uses `underscoreNoPrefixNamer`.

underscoreNoPrefixNamer :: FieldNamer Source #

A `FieldNamer` that strips the _ off of the field name, lowercases the name, and skips the field if it doesn't start with an '_'.

lensRulesFor Source #

Arguments

:: [(String, String)]

(Field Name, Definition Name)

-> LensRules |

Construct a `LensRules` value for generating top-level definitions using the given map from field names to definition names.

lookingupNamer :: [(String, String)] -> FieldNamer Source #

Create a `FieldNamer` from explicit pairings of `(fieldName, lensName)`.

mappingNamer Source #

Arguments

:: (String -> [String]) | A function that maps a `fieldName` to `lensName`s.
-> FieldNamer |

Create a `FieldNamer` from a mapping function. If the function returns `[]`, it creates no lens for the field.

classyRules :: LensRules Source #

Rules for making lenses and traversals that precompose another `Lens`.

classyRules_ :: LensRules Source #

A `LensRules` used by `makeClassy_`.

makeLenses :: Name -> DecsQ Source #

Build lenses (and traversals) with a sensible default configuration.

e.g.

    data FooBar
      = Foo { _x, _y :: Int }
      | Bar { _x :: Int }
    makeLenses ''FooBar

will create

    x :: Lens' FooBar Int
    x f (Foo a b) = (\a' -> Foo a' b) <$> f a
    x f (Bar a)   = Bar <$> f a
    y :: Traversal' FooBar Int
    y f (Foo a b) = (\b' -> Foo a  b') <$> f b
    y _ c@(Bar _) = pure c

    makeLenses = makeLensesWith lensRules

makeClassy :: Name -> DecsQ Source #

Make lenses and traversals for a type, and create a class when the type has no arguments.

e.g.

    data Foo = Foo { _fooX, _fooY :: Int }
    makeClassy ''Foo

will create

    class HasFoo t where
      foo :: Lens' t Foo
      fooX :: Lens' t Int
      fooX = foo . go where go f (Foo x y) = (\x' -> Foo x' y) <$> f x
      fooY :: Lens' t Int
      fooY = foo . go where go f (Foo x y) = (\y' -> Foo x y') <$> f y
    instance HasFoo Foo where
      foo = id

    makeClassy = makeLensesWith classyRules

makeClassy_ :: Name -> DecsQ Source #

Make lenses and traversals for a type, and create a class when the type has no arguments. Works the same as `makeClassy` except that (a) it expects that record field names do not begin with an underscore, (b) all record fields are made into lenses, and (c) the resulting lens is prefixed with an underscore.

makeLensesFor :: [(String, String)] -> Name -> DecsQ Source #

Derive lenses and traversals, specifying explicit pairings of `(fieldName, lensName)`.

If you map multiple names to the same label, and it is present in the same constructor then this will generate a `Traversal`.

e.g.

    makeLensesFor [("_foo", "fooLens"), ("baz", "lbaz")] ''Foo
    makeLensesFor [("_barX", "bar"), ("_barY", "bar")] ''Bar

makeClassyFor :: String -> String -> [(String, String)] -> Name -> DecsQ Source #

Derive lenses and traversals, using a named wrapper class, and specifying explicit pairings of `(fieldName, traversalName)`.

Example usage:

    makeClassyFor "HasFoo" "foo" [("_foo", "fooLens"), ("bar", "lbar")] ''Foo

makeLensesWith :: LensRules -> Name -> DecsQ Source #

Build lenses with a custom configuration.

declareLenses :: DecsQ -> DecsQ Source #

Make lenses for all records in the given declaration quote. All record syntax in the input will be stripped off.

e.g.

    declareLenses [d|
      data Foo = Foo { fooX, fooY :: Int }
        deriving Show
      |]

will create

    data Foo = Foo Int Int deriving Show
    fooX, fooY :: Lens' Foo Int

declareLensesFor :: [(String, String)] -> DecsQ -> DecsQ Source #

Similar to `makeLensesFor`, but takes a declaration quote.

declareClassy :: DecsQ -> DecsQ Source #

For each record in the declaration quote, make lenses and traversals for it, and create a class when the type has no arguments. All record syntax in the input will be stripped off.

e.g.

    declareClassy [d|
      data Foo = Foo { fooX, fooY :: Int }
        deriving Show
      |]

will create

    data Foo = Foo Int Int deriving Show
    class HasFoo t where
      foo :: Lens' t Foo
    instance HasFoo Foo where foo = id
    fooX, fooY :: HasFoo t => Lens' t Int

declareClassyFor :: [(String, (String, String))] -> [(String, String)] -> DecsQ -> DecsQ Source #

Similar to `makeClassyFor`, but takes a declaration quote.

declarePrisms :: DecsQ -> DecsQ Source #

Generate a `Prism` for each constructor of each data type.

e.g.

    declarePrisms [d|
      data Exp = Lit Int | Var String | Lambda{ bound::String, body::Exp }
      |]

will create

    data Exp = Lit Int | Var String | Lambda { bound::String, body::Exp }
    _Lit :: Prism' Exp Int
    _Var :: Prism' Exp String
    _Lambda :: Prism' Exp (String, Exp)

declareWrapped :: DecsQ -> DecsQ Source #

Build `Wrapped` instance for each newtype.

declareFields :: DecsQ -> DecsQ Source #

     declareFields = declareLensesWith defaultFieldRules

declareLensesWith :: LensRules -> DecsQ -> DecsQ Source #

Declare lenses for each records in the given declarations, using the specified `LensRules`. Any record syntax in the input will be stripped off.

makeWrapped :: Name -> DecsQ Source #

Build `Wrapped` instance for a given newtype

underscoreFields :: LensRules Source #

Field rules for fields in the form `_prefix_fieldname`

underscoreNamer :: FieldNamer Source #

A `FieldNamer` for `underscoreFields`.

camelCaseFields :: LensRules Source #

Field rules for fields in the form `prefixFieldname or _prefixFieldname` If you want all fields to be lensed, then there is no reason to use an `_` before the prefix. If any of the record fields leads with an `_` then it is assume a field without an `_` should not have a lens created.

Note: The `prefix` must be the same as the typename (with the first letter lowercased). This is a change from lens versions before lens 4.5. If you want the old behaviour, use `makeLensesWith` `abbreviatedFields`

camelCaseNamer :: FieldNamer Source #

A `FieldNamer` for `camelCaseFields`.

classUnderscoreNoPrefixFields :: LensRules Source #

Field rules for fields in the form `_fieldname` (the leading underscore is mandatory).

Note: The primary difference to `camelCaseFields` is that for `classUnderscoreNoPrefixFields` the field names are not expected to be prefixed with the type name. This might be the desired behaviour when the `DuplicateRecordFields` extension is enabled.

classUnderscoreNoPrefixNamer :: FieldNamer Source #

A `FieldNamer` for `classUnderscoreNoPrefixFields`.

abbreviatedFields :: LensRules Source #

Field rules fields in the form `prefixFieldname or _prefixFieldname` If you want all fields to be lensed, then there is no reason to use an `_` before the prefix. If any of the record fields leads with an `_` then it is assume a field without an `_` should not have a lens created.

Note that `prefix` may be any string of characters that are not uppercase letters. (In particular, it may be arbitrary string of lowercase letters and numbers) This is the behavior that `defaultFieldRules` had in lens 4.4 and earlier.

abbreviatedNamer :: FieldNamer Source #

A `FieldNamer` for `abbreviatedFields`.

makeFields :: Name -> DecsQ Source #

Generate overloaded field accessors.

e.g

    data Foo a = Foo { _fooX :: Int, _fooY :: a }
    newtype Bar = Bar { _barX :: Char }
    makeFields ''Foo
    makeFields ''Bar

will create

    _fooXLens :: Lens' (Foo a) Int
    _fooYLens :: Lens (Foo a) (Foo b) a b
    class HasX s a | s -> a where
      x :: Lens' s a
    instance HasX (Foo a) Int where
      x = _fooXLens
    class HasY s a | s -> a where
      y :: Lens' s a
    instance HasY (Foo a) a where
      y = _fooYLens
    _barXLens :: Iso' Bar Char
    instance HasX Bar Char where
      x = _barXLens

For details, see `camelCaseFields`.

    makeFields = makeLensesWith defaultFieldRules

makeFieldsNoPrefix :: Name -> DecsQ Source #

Generate overloaded field accessors based on field names which are only prefixed with an underscore (e.g. `_name`), not additionally with the type name (e.g. `_fooName`).

This might be the desired behaviour in case the `DuplicateRecordFields` language extension is used in order to get rid of the necessity to prefix each field name with the type name.

As an example:

    data Foo a  = Foo { _x :: Int, _y :: a }
    newtype Bar = Bar { _x :: Char }
    makeFieldsNoPrefix ''Foo
    makeFieldsNoPrefix ''Bar

will create classes

    class HasX s a | s -> a where
      x :: Lens' s a
    class HasY s a | s -> a where
      y :: Lens' s a

together with instances

    instance HasX (Foo a) Int
    instance HasY (Foo a) a where
    instance HasX Bar Char where

For details, see `classUnderscoreNoPrefixFields`.

    makeFieldsNoPrefix = makeLensesWith classUnderscoreNoPrefixFields

defaultFieldRules :: LensRules Source #