Copyright | (C) 2012-2014 Edward Kmett |
---|---|

License | BSD-style (see the file LICENSE) |

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

Stability | provisional |

Portability | non-portable |

Safe Haskell | Trustworthy |

Language | Haskell98 |

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

- toVectorOf :: Vector v a => Getting (Endo [a]) s a -> s -> v a
- forced :: Vector v a => Iso' (v a) (v a)
- vector :: Vector v a => Iso' [a] (v a)
- asStream :: Vector v a => Iso' (v a) (Stream a)
- asStreamR :: Vector v a => Iso' (v a) (Stream a)
- cloned :: Vector v a => Iso' (v a) (New v a)
- sliced :: Vector v a => Int -> Int -> Lens' (v a) (v a)
- ordinals :: Vector v a => [Int] -> IndexedTraversal' Int (v a) a

# Documentation

toVectorOf :: Vector v a => Getting (Endo [a]) s a -> s -> v a Source

Similar to `toListOf`

, but returning a `Vector`

.

`>>>`

fromList [8,15]`toVectorOf both (8,15) :: Vector.Vector Int`

# Isomorphisms

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

Convert a `Vector`

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

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

Convert a list to a `Vector`

(or back.)

`>>>`

fromList [1,2,3]`[1,2,3] ^. vector :: Vector.Vector Int`

`>>>`

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

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

Convert a `Vector`

to a finite `Stream`

(or back.)

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

Convert a `Vector`

to a finite `Stream`

from right to left (or
back.)

cloned :: Vector v a => 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`

.

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