optics-core-0.4.1: Optics as an abstract interface: core definitions
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

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

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

Instances details
Is An_AffineTraversal A_Fold Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

Is An_AffineTraversal An_AffineFold Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

Is An_AffineTraversal A_Setter Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

Is An_AffineTraversal A_Traversal Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

Is A_Prism An_AffineTraversal Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

Is A_Lens An_AffineTraversal Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

Is An_Iso An_AffineTraversal Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

ArrowChoice arr => ArrowOptic An_AffineTraversal arr Source #
Instance details

Defined in Optics.Arrow

Methods

overA :: forall (is :: IxList ) s t a b. Optic An_AffineTraversal is s t a b -> arr a b -> arr s t Source #

k ~ A_Fold => JoinKinds A_Fold An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineFold => JoinKinds An_AffineFold An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineFold => JoinKinds A_Getter An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineFold => JoinKinds A_ReversedPrism An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ A_Setter => JoinKinds A_Setter An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ A_Traversal => JoinKinds A_Traversal An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ A_Fold => JoinKinds An_AffineTraversal A_Fold k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineFold => JoinKinds An_AffineTraversal An_AffineFold k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineFold => JoinKinds An_AffineTraversal A_Getter k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineFold => JoinKinds An_AffineTraversal A_ReversedPrism k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ A_Setter => JoinKinds An_AffineTraversal A_Setter k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ A_Traversal => JoinKinds An_AffineTraversal A_Traversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineTraversal => JoinKinds An_AffineTraversal An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineTraversal => JoinKinds An_AffineTraversal A_Prism k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineTraversal => JoinKinds An_AffineTraversal A_Lens k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineTraversal => JoinKinds An_AffineTraversal An_Iso k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineTraversal => JoinKinds A_Prism An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineTraversal => JoinKinds A_Lens An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

k ~ An_AffineTraversal => JoinKinds An_Iso An_AffineTraversal k Source #
Instance details

Defined in Optics.Internal.Optic.Subtyping

ToReadOnly An_AffineTraversal s t a b Source #
Instance details

Defined in Optics.ReadOnly

IxOptic An_AffineTraversal s t a b Source #
Instance details

Defined in Optics.Indexed.Core

type ReadOnlyOptic An_AffineTraversal Source #
Instance details

Defined in Optics.ReadOnly

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