Safe Haskell | None |
---|---|
Language | Haskell2010 |
An
IxAffineFold
is an indexed version of an
AffineFold
.
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 IxAffineFold i s a = Optic' An_AffineFold ( WithIx i) s a
- iafolding :: (s -> Maybe (i, a)) -> IxAffineFold i s a
- ipreview :: ( Is k An_AffineFold , is `HasSingleIndex` i) => Optic' k is s a -> s -> Maybe (i, a)
- ipreviews :: ( Is k An_AffineFold , is `HasSingleIndex` i) => Optic' k is s a -> (i -> a -> r) -> s -> Maybe r
- iafoldVL :: ( forall f. Functor f => ( forall r. r -> f r) -> (i -> a -> f u) -> s -> f v) -> IxAffineFold i s a
- iatraverseOf_ :: ( Is k An_AffineFold , Functor f, is `HasSingleIndex` i) => Optic' k is s a -> ( forall r. r -> f r) -> (i -> a -> f u) -> s -> f ()
- filteredBy :: Is k An_AffineFold => Optic' k is a i -> IxAffineFold i a a
- iafailing :: ( Is k An_AffineFold , Is l An_AffineFold , is1 `HasSingleIndex` i, is2 `HasSingleIndex` i) => Optic' k is1 s a -> Optic' l is2 s a -> IxAffineFold i s a
- data An_AffineFold :: OpticKind
Formation
type IxAffineFold i s a = Optic' An_AffineFold ( WithIx i) s a Source #
Type synonym for an indexed affine fold.
Introduction
iafolding :: (s -> Maybe (i, a)) -> IxAffineFold i s a Source #
Create an
IxAffineFold
from a partial function.
Elimination
ipreview :: ( Is k An_AffineFold , is `HasSingleIndex` i) => Optic' k is s a -> s -> Maybe (i, a) Source #
Retrieve the value along with its index targeted by an
IxAffineFold
.
ipreviews :: ( Is k An_AffineFold , is `HasSingleIndex` i) => Optic' k is s a -> (i -> a -> r) -> s -> Maybe r Source #
Retrieve a function of the value and its index targeted by an
IxAffineFold
.
Computation
Additional introduction forms
iafoldVL :: ( forall f. Functor f => ( forall r. r -> f r) -> (i -> a -> f u) -> s -> f v) -> IxAffineFold i s a Source #
Obtain an
IxAffineFold
by lifting
itraverse_
like function.
aifoldVL
.
iatraverseOf_
≡id
aitraverseOf_
.
iafoldVL
≡id
Since: 0.3
Additional elimination forms
iatraverseOf_ :: ( Is k An_AffineFold , Functor f, is `HasSingleIndex` i) => Optic' k is s a -> ( forall r. r -> f r) -> (i -> a -> f u) -> s -> f () Source #
Traverse over the target of an
IxAffineFold
, computing a
Functor
-based
answer, but unlike
iatraverseOf
do not construct a
new structure.
Since: 0.3
Combinators
filteredBy :: Is k An_AffineFold => Optic' k is a i -> IxAffineFold i a a Source #
Obtain a potentially empty
IxAffineFold
by taking the element from
another
AffineFold
and using it as an index.
Since: 0.3
Monoid structure
IxAffineFold
admits a monoid structure where
iafailing
combines folds
(returning a result from the second fold only if the first returns none)
and the identity element is
ignored
(which
returns no results).
Note:
There is no
isumming
equivalent that returns an
IxAffineFold
, because it would not need to return more than one result.
There is no
Semigroup
or
Monoid
instance for
IxAffineFold
, because
there is not a unique choice of monoid to use that works for all optics,
and the (
<>
) operator could not be used to combine optics of different
kinds.
iafailing :: ( Is k An_AffineFold , Is l An_AffineFold , is1 `HasSingleIndex` i, is2 `HasSingleIndex` i) => Optic' k is1 s a -> Optic' l is2 s a -> IxAffineFold i s a infixl 3 Source #
Try the first
IxAffineFold
. If it returns no entry, try the second one.
Subtyping
data An_AffineFold :: OpticKind Source #
Tag for an affine fold.