:: Maybe Int -> Int -> Int package:vector

O(1) Indexing.
O(1) Unsafe indexing without bounds checking.
O(1) Safe indexing.
O(n) Append an element.
O(1) Indexing in a monad. The monad allows operations to be strict in the vector when necessary. Suppose vector copying is implemented like this:
copy mv v = ... write mv i (v ! i) ...
For lazy vectors, v ! i would not be evaluated which means that mv would unnecessarily retain a reference to v in each element written. With indexM, copying can be implemented like this instead:
copy mv v = ... do
x <- indexM v i
write mv i x
Here, no references to v are retained because indexing (but not the element) is evaluated eagerly.
O(1) Indexing in a monad, without bounds checks. See indexM for an explanation of why this is useful.
O(n) Yield Just the index of the first occurrence of the given element or Nothing if the vector does not contain the element. This is a specialised version of findIndex.