# Non-empty Vectors
 [](https://hackage.haskell.org/package/nonempty-vector)
This package provides thin wrappers around mutable and immutable
[vector](https://hackage.haskell.org/package/vector) types that enforce
non-emptiness, with APIs for both boxed and unboxed storage.
| Storage | Immutable | Mutable |
| --- | --- | --- |
| Boxed | `Data.Vector.NonEmpty` | `Data.Vector.NonEmpty.Mutable` |
| Unboxed | `Data.Vector.NonEmpty.Unboxed` | `Data.Vector.NonEmpty.Unboxed.Mutable` |
The unboxed API requires `Unbox` instances for element types. Operations that can
produce an empty result return an ordinary vector or `Maybe`, as appropriate.
The `Internal` modules expose constructors for users who manage the non-emptiness
invariant themselves.
Library dependencies are `base`, `deepseq`, `primitive`, and `vector`.