vector-sized: Size tagged vectors

[ bsd3, data, library ] [ Propose Tags ]
Versions [RSS] 0.1.0.0, 0.2.0.0, 0.3.0.0, 0.3.2.0, 0.3.3.0, 0.4.0.0, 0.4.0.1, 0.4.1.0, 0.5.0.0, 0.5.1.0, 0.6.1.0, 1.0.0.0, 1.0.1.0, 1.0.2.0, 1.0.3.0, 1.0.3.1, 1.0.4.0, 1.1.0.0, 1.1.1.0, 1.2.0.0, 1.2.0.1, 1.4.0.0, 1.4.1.0, 1.4.2, 1.4.3, 1.4.3.1, 1.4.4, 1.5.0, 1.6.1 (info)
Change log changelog.md
Dependencies adjunctions (>=4.3 && <4.5), base (>=4.9 && <5), comonad (>=4 && <6), deepseq (>=1.1 && <1.5), distributive (>=0.5 && <0.7), finite-typelits (>=0.1), indexed-list-literals (>=0.2.0.0), primitive (>=0.5 && <0.7), vector (>=0.11 && <0.13) [details]
License BSD-3-Clause
Copyright 2016 Joe Hermaszewski
Author Joe Hermaszewski
Maintainer whats.our.vector.victor@monoid.al
Category Data
Home page http://github.com/expipiplus1/vector-sized#readme
Source repo head: git clone https://github.com/expipiplus1/vector-sized
Uploaded by jophish at 2018-11-13T14:43:22Z
Distributions Arch:1.6.1, LTSHaskell:1.5.0, NixOS:1.5.0, Stackage:1.6.1
Reverse Dependencies 26 direct, 54 indirect [details]
Downloads 23913 total (154 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for vector-sized-1.1.1.0

[back to package description]

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