Portability | non-portable |
---|---|

Stability | provisional |

Maintainer | Edward Kmett <ekmett@gmail.com> |

Safe Haskell | Trustworthy |

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

- toVectorOf :: Getting (Endo [a]) s t a b -> s -> Vector a
- vector :: Iso [a] [b] (Vector a) (Vector b)
- reversed :: Iso (Vector a) (Vector b) (Vector a) (Vector b)
- forced :: Iso (Vector a) (Vector b) (Vector a) (Vector b)
- sliced :: Int -> Int -> Lens' (Vector a) (Vector a)
- ordinals :: [Int] -> IndexedTraversal' Int (Vector a) a

# Documentation

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

# Isomorphisms

vector :: Iso [a] [b] (Vector a) (Vector b)Source

Convert a list to a `Vector`

(or back)

`>>>`

fromList [1,2,3]`[1,2,3] ^. vector`

`>>>`

[1,2,3]`[1,2,3] ^. vector . from vector`

`>>>`

fromList [0,8,15]`Vector.fromList [0,8,15] ^. from vector . vector`

reversed :: Iso (Vector a) (Vector b) (Vector a) (Vector b)Source

Convert a `Vector`

to a version with all the elements in the
reverse order.

`>>>`

fromList [3,2,1]`Vector.fromList [1,2,3] ^. reversed`

forced :: Iso (Vector a) (Vector b) (Vector a) (Vector b)Source

Convert a `Vector`

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

# Lenses

`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.

`>>>`

fromList [3,4,5,6,7]`Vector.fromList [1..10] ^. sliced 2 5`

`>>>`

fromList [1,2,0,0,0,0,0,8,9,10]`Vector.fromList [1..10] & sliced 2 5 . mapped .~ 0`