Safe Haskell | None |
---|---|
Language | Haskell2010 |
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
::IxAffineTraversal
i s t a b -> s -> Maybe (i, a)
iover
::IxAffineTraversal
i s t a b -> (i -> a -> b) -> s -> tiset
::IxAffineTraversal
i 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 (seeunsafeFiltered
for 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 %~ absurd
6
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