vector-sized alternatives and similar packages
Based on the "vector" category.
Alternatively, view vector-sized alternatives based on common mentions on social networks and blogs.
-
vector
An efficient implementation of Int-indexed arrays (both mutable and immutable), with a powerful loop optimisation framework . -
vector-binary-instances
Instances for the Haskell Binary class, for the types defined in the popular vector package.
SaaSHub - Software Alternatives and Reviews
Do you think we are missing an alternative of vector-sized or a related project?
README
vector-sized
This package exports a newtype tagging the vectors from the vector
package with a type-level natural representing their size. It also exports
functions from vector
whose size can be determined ahead of time,
appropriately retyped.
Currently, we provide size-tagged versions of the following:
Data.Vector.Vector
, inData.Vector.Sized
Data.Vector.Generic.Vector
, inData.Vector.Generic.Sized
Data.Vector.Storable.Vector
, inData.Vector.Storable.Sized
Data.Vector.Unboxed.Vector
, inData.Vector.Unboxed.Sized
We also provide mutable versions of each of the above. Additionally, we include functions for converting to and from 'unsized' vectors and lists, using CPS-style existentials.
The code in this package is based on the initial work by Ben Gamari in a PR for
vulkan
.
How is this different to fixed-vector
?
This package is fairly similar to fixed-vector
, as both libraries are
designed to provide vectors of statically known length. However, the
implementations used are different, with different tradeoffs. vector-sized
uses a newtype wrapper around vectors from vector
, and is thus able to
handle vectors of arbitrary length. However, this approach requires us to carry
a runtime representation of length, which is a significant memory overhead for
small vectors. fixed-vector
instead defines all functions as manipulations
of Church-encoded product types of the form ∀r. (a → a → r) → r
(for 2D
vectors), allowing it to work for both arbitrary product types (like data V2 a
= V2 a a
) and opaque length-parameterized vectors. However, as a consequence
of this implementation choice, fixed-vector
cannot handle vectors whose size
exceeds tens of elements.