lens-2.6.1: Lenses, Folds and Traversals

Portability MPTCs, Rank2Types, LiberalTypeSynonyms provisional Edward Kmett Safe-Infered

Data.Array.Lens

Contents

Description

Synopsis

# Indexing

ix :: (IArray a e, Ix i) => i -> Simple Lens (a i e) eSource

Access an element of an array.

Note: The indexed element is assumed to exist in the target `IArray`.

`arr `!` i = arr `^.` `ix` i`
`arr `//` [(i,e)] = `ix` i `.~` e `\$` arr`
````>>> ````ix 2 .~ 9 \$ (listArray (1,5) [4,5,6,7,8] :: Array Int Int)
```array (1,5) [(1,4),(2,9),(3,6),(4,7),(5,8)]
```

# Setters

ixmapped :: (IArray a e, Ix i, Ix j) => (i, i) -> Setter (a j e) (a i e) i jSource

This setter can be used to derive a new `IArray` from an old array by applying a function to each of the indices to look it up in the old `IArray`.

This is a contravariant `Setter`.

``ixmap` = `over` . `ixmapped``
``ixmapped` = `sets` . `ixmap``
``over` (`ixmapped` b) f arr `!` i = arr `!` f i`
``bounds` (`over` (`ixmapped` b) f arr) = b`

# Traversal

traverseArray :: (IArray a c, IArray a d, Ix i) => IndexedTraversal i (a i c) (a i d) c dSource

An `IndexedTraversal` of the elements of an `IArray`, using the index into the array as the index of the traversal.

``amap` = `over` `traverseArray``