Safe Haskell | None |
---|---|

Language | Haskell2010 |

## Synopsis

- module Data.Vector
- toVectorOf :: Getting (Endo [a]) s a -> s -> Vector a
- vector :: (Profunctor p, Functor f) => p (Vector a) (f (Vector b)) -> p [a] (f [b])
- forced :: (Profunctor p, Functor f) => p (Vector a) (f (Vector b)) -> p (Vector a) (f (Vector b))
- sliced :: Int -> Int -> Lens' (Vector a) (Vector a)

# Vector

module Data.Vector

## Optics

toVectorOf :: Getting (Endo [a]) s a -> s -> Vector a #

vector :: (Profunctor p, Functor f) => p (Vector a) (f (Vector b)) -> p [a] (f [b]) #

Convert a list to a `Vector`

(or back)

`>>>`

True`[1,2,3] ^. vector == Vector.fromList [1,2,3]`

`>>>`

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

`>>>`

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

forced :: (Profunctor p, Functor f) => p (Vector a) (f (Vector b)) -> p (Vector a) (f (Vector b)) #

Convert a `Vector`

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

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

`>>>`

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

`>>>`

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