| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Optics.IxAffineTraversal
Description
An IxAffineTraversal is an indexed version of an
AffineTraversal. See the "Indexed optics" section
of the overview documentation in the Optics module of the main optics
package for more details on indexed optics.
Synopsis
- type IxAffineTraversal i s t a b = Optic An_AffineTraversal (WithIx i) s t a b
- type IxAffineTraversal' i s a = Optic' An_AffineTraversal (WithIx i) s a
- iatraversal :: (s -> Either t (i, a)) -> (s -> b -> t) -> IxAffineTraversal i s t a b
- unsafeFilteredBy :: Is k An_AffineFold => Optic' k is a i -> IxAffineTraversal' i a a
- ignored :: IxAffineTraversal i s s a b
- data An_AffineTraversal :: OpticKind
- type IxAffineTraversalVL i s t a b = forall f. Functor f => (forall r. r -> f r) -> (i -> a -> f b) -> s -> f t
- type IxAffineTraversalVL' i s a = IxAffineTraversalVL i s s a a
- iatraversalVL :: IxAffineTraversalVL i s t a b -> IxAffineTraversal i s t a b
- iatraverseOf :: (Is k An_AffineTraversal, Functor f, is `HasSingleIndex` i) => Optic k is s t a b -> (forall r. r -> f r) -> (i -> a -> f b) -> s -> f t
Formation
type IxAffineTraversal i s t a b = Optic An_AffineTraversal (WithIx i) s t a b Source #
Type synonym for a type-modifying indexed affine traversal.
type IxAffineTraversal' i s a = Optic' An_AffineTraversal (WithIx i) s a Source #
Type synonym for a type-preserving indexed affine traversal.
Introduction
iatraversal :: (s -> Either t (i, a)) -> (s -> b -> t) -> IxAffineTraversal i s t a b Source #
Build an indexed affine traversal from a matcher and an updater.
If you want to build an IxAffineTraversal from the van Laarhoven
representation, use iatraversalVL.
Elimination
An IxAffineTraversal is in particular an
IxAffineFold and an IxSetter,
therefore you can specialise types to obtain:
ipreview::IxAffineTraversali s t a b -> s -> Maybe (i, a)
iover::IxAffineTraversali s t a b -> (i -> a -> b) -> s -> tiset::IxAffineTraversali s t a b -> (i -> b) -> s -> t
Combinators
unsafeFilteredBy :: Is k An_AffineFold => Optic' k is a i -> IxAffineTraversal' i a a Source #
Obtain a potentially empty IxAffineTraversal by taking the element from
another AffineFold and using it as an index.
- - Note: This is not a legal
IxTraversal, unless you are very careful not to invalidate the predicate on the target (seeunsafeFilteredfor more details).
Since: 0.3
Additional introduction forms
ignored :: IxAffineTraversal i s s a b Source #
This is the trivial empty IxAffineTraversal, i.e. the optic that targets
no substructures.
This is the identity element when a Fold,
AffineFold, IxFold,
IxAffineFold, Traversal or
IxTraversal is viewed as a monoid.
>>>6 & ignored %~ absurd6
Subtyping
data An_AffineTraversal :: OpticKind Source #
Tag for an affine traversal.
Instances
van Laarhoven encoding
type IxAffineTraversalVL i s t a b = forall f. Functor f => (forall r. r -> f r) -> (i -> a -> f b) -> s -> f t Source #
Type synonym for a type-modifying van Laarhoven indexed affine traversal.
Note: this isn't exactly van Laarhoven representation as there is no
Pointed class (which would be a superclass of Applicative that contains
pure but not <*>). You can interpret the first argument as a dictionary
of Pointed that supplies the point function (i.e. the implementation of
pure).
type IxAffineTraversalVL' i s a = IxAffineTraversalVL i s s a a Source #
Type synonym for a type-preserving van Laarhoven indexed affine traversal.
iatraversalVL :: IxAffineTraversalVL i s t a b -> IxAffineTraversal i s t a b Source #
Build an indexed affine traversal from the van Laarhoven representation.
iatraverseOf :: (Is k An_AffineTraversal, Functor f, is `HasSingleIndex` i) => Optic k is s t a b -> (forall r. r -> f r) -> (i -> a -> f b) -> s -> f t Source #
Traverse over the target of an IxAffineTraversal and compute a
Functor-based answer.
Since: 0.3