Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Vector v n a
- fromVector :: forall a v n. (KnownNat n, Vector v a) => v a -> Maybe (Vector v n a)
- replicate :: forall a v n. (Vector v a, KnownNat n) => a -> Vector v n a
- singleton :: forall a v. Vector v a => a -> Vector v 1 a
- generate :: forall n a v. (Vector v a, KnownNat n) => Proxy n -> (Int -> a) -> Vector v n a
- generateM :: forall n a v m. (Vector v a, KnownNat n, Monad m) => Proxy n -> (Int -> m a) -> m (Vector v n a)
- length :: forall a v n. Vector v a => Vector v n a -> Int
- index :: forall m a v n. (KnownNat n, KnownNat m, Vector v a) => Vector v (m + n) a -> Proxy n -> a
- head :: forall a v n. Vector v a => Vector v (n + 1) a -> a
- last :: forall a v n. Vector v a => Vector v (n + 1) a -> a
- tail :: forall a v n. Vector v a => Vector v (n + 1) a -> Vector v n a
- init :: forall a v n. Vector v a => Vector v (n + 1) a -> Vector v n a
- take :: forall m a v n. (KnownNat n, KnownNat m, Vector v a) => Proxy n -> Vector v (m + n) a -> Vector v n a
- drop :: forall m a v n. (KnownNat n, KnownNat m, Vector v a) => Proxy n -> Vector v (m + n) a -> Vector v m a
- map :: forall a b v n. (Vector v a, Vector v b) => (a -> b) -> Vector v n a -> Vector v n b
- imapM_ :: forall a v n b m. (Vector v a, Monad m) => (Int -> a -> m b) -> Vector v n a -> m ()
- foldl' :: forall a b v n. Vector v b => (a -> b -> a) -> a -> Vector v n b -> a
- foldl1' :: forall a v n. Vector v a => (a -> a -> a) -> Vector v (n + 1) a -> a
Documentation
Construction
replicate :: forall a v n. (Vector v a, KnownNat n) => a -> Vector v n a Source
O(n) Construct a vector with the same element in each position.
singleton :: forall a v. Vector v a => a -> Vector v 1 a Source
O(1) construct a single element vector.
generate :: forall n a v. (Vector v a, KnownNat n) => Proxy n -> (Int -> a) -> Vector v n a Source
O(n) construct a vector of the given length by applying the function to each index.
Monadic Construction
generateM :: forall n a v m. (Vector v a, KnownNat n, Monad m) => Proxy n -> (Int -> m a) -> m (Vector v n a) Source
O(n) construct a vector of the given length by applying the monadic action to each index.
Elimination
index :: forall m a v n. (KnownNat n, KnownNat m, Vector v a) => Vector v (m + n) a -> Proxy n -> a Source
O(1) Index safely into the vector using a type level index.
head :: forall a v n. Vector v a => Vector v (n + 1) a -> a Source
O(1) Get the first element of a non-empty vector.
last :: forall a v n. Vector v a => Vector v (n + 1) a -> a Source
O(1) Get the last element of a non-empty vector.
Extract subsets
tail :: forall a v n. Vector v a => Vector v (n + 1) a -> Vector v n a Source
O(1) Yield all but the first element of a non-empty vector without copying.
init :: forall a v n. Vector v a => Vector v (n + 1) a -> Vector v n a Source
O(1) Yield all but the last element of a non-empty vector without copying.
take :: forall m a v n. (KnownNat n, KnownNat m, Vector v a) => Proxy n -> Vector v (m + n) a -> Vector v n a Source
O(1) Yield the first n elements. The resultant vector always contains this many elements.
drop :: forall m a v n. (KnownNat n, KnownNat m, Vector v a) => Proxy n -> Vector v (m + n) a -> Vector v m a Source
O(1) Yield all but the first n elements.
Mapping
map :: forall a b v n. (Vector v a, Vector v b) => (a -> b) -> Vector v n a -> Vector v n b Source
O(n) Map a function over the vector.
Monadic Mapping
imapM_ :: forall a v n b m. (Vector v a, Monad m) => (Int -> a -> m b) -> Vector v n a -> m () Source
O(n) Apply the monadic action to every element of a vector and its index, ignoring the results.