optics-core-0.3.0.1: Optics as an abstract interface: core definitions

Optics.IxAffineFold

Description

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

# 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

ipreview (iafolding f) ≡ f


# 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

Tag for an affine fold.

Instances
 Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints An_AffineFold p -> r) -> Constraints A_Fold p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints A_Getter p -> r) -> Constraints An_AffineFold p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints A_ReversedPrism p -> r) -> Constraints An_AffineFold p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints An_AffineTraversal p -> r) -> Constraints An_AffineFold p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints A_Prism p -> r) -> Constraints An_AffineFold p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints A_Lens p -> r) -> Constraints An_AffineFold p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints An_Iso p -> r) -> Constraints An_AffineFold p -> r Source # (s ~ t, a ~ b) => ToReadOnly An_AffineFold s t a b Source # Instance detailsDefined in Optics.ReadOnly Methodsgetting :: Optic An_AffineFold is s t a b -> Optic' (Join A_Getter An_AffineFold) is s a Source # (s ~ t, a ~ b) => IxOptic An_AffineFold s t a b Source # Instance detailsDefined in Optics.Indexed.Core MethodsnoIx :: NonEmptyIndices is => Optic An_AffineFold is s t a b -> Optic An_AffineFold NoIx s t a b Source #