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

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

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 -> t
iset     :: 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 (see unsafeFiltered for more details).

Since: 0.3

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 or IxAffineFold is viewed as a monoid.

>>> 6 & ignored %~ absurd
6


Subtyping

Tag for an affine traversal.

Instances
 Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints An_AffineTraversal p -> r) -> Constraints A_Fold 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 An_AffineTraversal p -> r) -> Constraints A_Setter p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints An_AffineTraversal p -> r) -> Constraints A_Traversal p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints A_Prism p -> r) -> Constraints An_AffineTraversal p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints A_Lens p -> r) -> Constraints An_AffineTraversal p -> r Source # Source # Instance detailsDefined in Optics.Internal.Optic.Subtyping Methodsimplies :: (Constraints An_Iso p -> r) -> Constraints An_AffineTraversal p -> r Source # Source # Instance detailsDefined in Optics.Arrow MethodsoverA :: Optic An_AffineTraversal is s t a b -> arr a b -> arr s t Source # ToReadOnly An_AffineTraversal s t a b Source # Instance detailsDefined in Optics.ReadOnly Methodsgetting :: Optic An_AffineTraversal is s t a b -> Optic' (Join A_Getter An_AffineTraversal) is s a Source # IxOptic An_AffineTraversal s t a b Source # Instance detailsDefined in Optics.Indexed.Core MethodsnoIx :: NonEmptyIndices is => Optic An_AffineTraversal is s t a b -> Optic An_AffineTraversal NoIx s t a b Source #

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