BSD3 licensed by Joe Hermaszewski
Maintained by

Module documentation for

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 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


Change Log

[] - 2018-05-15

  • not-home haddock annotations for Internal modules, for more helpful linking
  • Fix build with indexed-list-literals-

[] - 2018-04-12

  • Add Representable and Distributive instances for sized boxed vectors
  • Use newer version of indexed-list-literals to allow a fully featured compile on ghc 8.4

[] - 2018-03-20

  • More functions using Finite instead of Int
  • Add Read and Semigroup instances
  • Performance improvements for Applicative
  • Add a knownLength function
  • Add fromTuple (ghc < 8.3 for now)
  • Add sized variants of mutable vectors
  • Expose sized vector constructors from Internal modules

Huge thanks to all the contributors!

[] - 2017-08-04

  • Add lenses ix, _head and _last

[] - 2017-06-07

  • Make ordering of additions in types be more consistent
  • Make slice more general
  • Num, Fractional, and Floating instances for vectors

[] - 2017-02-01

  • Loosen upper bound on vector

[] - 2017-01-04

  • Use Finite from finite-typelits for indexing.

[] - 2016-11-24

  • Add withSized and withSizedList

[] - 2016-11-12

  • Raise lower bound on base to 4.9

[] - 2016-11-01

  • Correct type signature on index'

[] - 2016-08-10

  • Add instances for Data, Typeable and Generic

[] - 2016-03-29

  • Add overlapping Monoid instance for zero length vectors

[] - 2016-03-29

  • Add Monoid instance

[] - 2016-03-22

  • Export all of the available functionality from Data.Vector.Generic.
  • Add Storable
  • Add Unboxed

[] - 2016-02-29

  • Tighter bounds on base to avoid compiling with GHC < 7.10.

[] - 2016-02-28

  • Initial release.
comments powered byDisqus