This package exports a newtype tagging the vectors from the vector package with a type level natural representing their size. It also exports a few functions from vector appropriately retyped.
This package is fairly similar to
the fixed-vector package.
While both provide vectors of statically know length they use completely
different implementation with different tradeoffs. vector-sized
is a newtype
wrapper over vector
thus it's able to handle vectors of arbitrary length but
have to carry runtime representation of length which is significant memory
overhead for small vectors. fixed-vector
defines all functions as
manipulations of Church-encoded product types (∀r. (a→a→r) → r
for 2D vectors)
so it can work for both arbitrary product types like data V2 a = V2 a a
and
opaque length-parametrized vectors provided by library. As consequence of
implementation it can't handle vectors larger than tens of elements.
The initial code for this package was written by @bgamari in a PR for vulkan