lens-3.7.1: Lenses, Folds and Traversals

Portabilitynon-portable
Stabilityprovisional
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy

Data.Vector.Generic.Lens

Contents

Description

This module provides lenses and traversals for working with generic vectors.

Synopsis

Documentation

toVectorOf :: Vector v a => Getting (Endo [a]) s t a b -> s -> v aSource

Similar to toListOf, but returning a Vector.

Isomorphisms

forced :: Vector v a => Simple Iso (v a) (v a)Source

Convert a Vector to a version that doesn't retain any extra memory.

vector :: Vector v a => Simple Iso [a] (v a)Source

Convert a list to a Vector (or back)

asStream :: Vector v a => Simple Iso (v a) (Stream a)Source

Convert a Vector to a finite Stream (or back)

asStreamR :: Vector v a => Simple Iso (v a) (Stream a)Source

Convert a Vector to a finite Stream from right to left (or back)

cloned :: Vector v a => Simple Iso (v a) (New v a)Source

Convert a Vector back and forth to an initializer that when run produces a copy of the Vector.

reversed :: Vector v a => Simple Iso (v a) (v a)Source

Convert a Vector to a version with all the elements in the reverse order

Lenses

_head :: Vector v a => SimpleLens (v a) aSource

A lens reading and writing to the head of a non-empty Vector

Attempting to read or write to the head of an empty Vector will result in an error.

>>> Vector.fromList [1,2,3]^._head
1

_tail :: Vector v a => SimpleLens (v a) (v a)Source

A lens reading and writing to the tail of a non-empty Vector

Attempting to read or write to the tail of an empty Vector will result in an error.

>>> _tail .~ Vector.fromList [3,4,5] $ Vector.fromList [1,2]
fromList [1,3,4,5]

_last :: Vector v a => SimpleLens (v a) aSource

A Lens reading and writing to the last element of a non-empty Vector

Attempting to read or write to the last element of an empty Vector will result in an error.

>>> Vector.fromList [1,2]^._last
2

_init :: Vector v a => SimpleLens (v a) (v a)Source

A Lens reading and replacing all but the a last element of a non-empty Vector

Attempting to read or write to all but the last element of an empty Vector will result in an error.

>>> Vector.fromList [1,2,3,4]^._init
fromList [1,2,3]

slicedSource

Arguments

:: Vector v a 
=> Int

i starting index

-> Int

n length

-> SimpleLens (v a) (v a) 

sliced i n provides a lens that edits the n elements starting at index i from a lens.

This is only a valid lens if you do not change the length of the resulting Vector.

Attempting to return a longer or shorter vector will result in violations of the Lens laws.

Traversal of individual indices

ordinal :: Vector v a => Int -> SimpleIndexedLens Int (v a) aSource

This is a more efficient version of element that works for any Vector.

ordinal n is only a valid Lens into a Vector with length at least n + 1.

ordinals :: Vector v a => [Int] -> SimpleIndexedTraversal Int (v a) aSource

This Traversal will ignore any duplicates in the supplied list of indices.

>>> toListOf (ordinals [1,3,2,5,9,10]) $ Vector.fromList [2,4..40]
[4,8,6,12,20,22]