Direction: * Fill out API * Complete coverage -- ensure we can enumerate all primitives types, and fuse them. * Direct implementation of fusible operations too -- substrings, length in O(1) * concat/concatMap ? (need lifted arrays?) * IO introduction - Data.Binary/bytestring - Array interface? - Binary? * A good strategy for user defined loops (pure, impure) * A good strategy for user defined packing * Organisation: Vector -- stream version Strict -- strict data types and ops Vector.Array -- direct implementation Vector.Mutable -- mutable ops Prim/* Stream/* Mutable: new length read, write copy, stream, unstream * To and from ByteStrings. See the operators in the OCaml library, http://caml.inria.fr/pub/docs/manual-ocaml/libref/Bigarray.Array1.html Beware: * combining modules can break fusion in 6.8.2 Documentation: * State that -O2 is *required* for unboxing of stream state components with SpecConstr otherwise, -O -fspec-constr * Examples of high and low level use * haddocks Performance: * Need performance benchmarks Possibles: * Maybe provide ST interface for low level things?