name: vec version: 0 synopsis: Nat, Fin and Vec types. description: This package provides length indexed lists, i.e. 'Vec'. . @ data Vec n a where VNil :: Vec 'Nat.Z a (:::) :: a -> Vec n a -> Vec ('Nat.S n) a @ . The functions are implemented in three flavours: . * __naive__: with explicit recursion. It's simple, constraint-less, yet slow. . * __pull__: using @Fin n -> a@ representation, which fuses well, but makes some programs hard to write. And . * __inline__: which exploits how GHC dictionary inlining works, unrolling recursion if the size of 'Vec' is known statically. . As best approach depends on the application, @vec@ doesn't do any magic transformation. Benchmark your code. . Differences to other packages: . * [linear](http://hackage.haskell.org/package/linear) has 'V' type, which uses 'Vector' from @vector@ package as backing store. `Vec` is a real GADT, but tries to provide as many useful instances (upto @lens@). . * [sized-vector](http://hackage.haskell.org/package/sized-vector) depends on @singletons@ package. `vec` isn't light on dependencies either, but try to provide wide GHC support. . * [sized](https://hackage.haskell.org/package/sized) also depends on a @singletons@ package. The @Sized f n a@ type is generalisation of @linear@'s @V@ for any @ListLike@. . * [clash-prelude](https://hackage.haskell.org/package/clash-prelude) is a kitchen sink package, which has @CLaSH.Sized.Vector@ module. Also depends on @singletons@. homepage: https://github.com/phadej/vec bug-reports: https://github.com/phadej/vec/issues license: BSD3 license-file: LICENSE author: Oleg Grenrus maintainer: Oleg.Grenrus copyright: (c) 2017 Oleg Grenrus category: Data build-type: Simple extra-source-files: ChangeLog.md cabal-version: >=1.10 tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.1 source-repository head type: git location: https://github.com/phadej/vec.git library exposed-modules: Data.Vec.Lazy Data.Vec.Lazy.Inline Data.Vec.Pull build-depends: adjunctions >=4.3 && <4.4, base >=4.7 && <4.11, base-compat >=0.9.3 && <0.10, boring >=0 && <0.1, deepseq >=1.3.0.2 && <1.5, distributive >=0.5.3 && <0.6, fin >=0 && <0.1, hashable >=1.2.6.1 && <1.3, lens >=4.15.4 && <4.16, semigroupoids >=5.2.1 && <5.3, semigroups >=0.18.3 && <0.18.4 ghc-options: -Wall -fprint-explicit-kinds hs-source-dirs: src other-extensions: CPP FlexibleContexts GADTs TypeOperators default-language: Haskell2010 test-suite inspection type: exitcode-stdio-1.0 main-is: Inspection.hs ghc-options: -Wall -fprint-explicit-kinds hs-source-dirs: test default-language: Haskell2010 build-depends: base, fin, vec, tagged, inspection-testing >= 0.1.1.2 && <0.2 if !impl(ghc >= 8.0) buildable: False -- useful for development ghc-options: -- -dsuppress-idinfo -- -dsuppress-coercions -- -dsuppress-type-applications -- -dsuppress-module-prefixes -- -dsuppress-type-signatures -- -dsuppress-uniques benchmark bench type: exitcode-stdio-1.0 main-is: Bench.hs ghc-options: -Wall -fprint-explicit-kinds hs-source-dirs: bench default-language: Haskell2010 other-modules: DotProduct build-depends: base, fin, vec, vector, criterion >= 1.2.3.0 && <1.3