indexed-list-literals: Type safe indexed list literals
This version is deprecated.
This is an incredibly simple library, which makes writing lists where the length is known at compile time a little bit nicer.
If you write a function with the signature
vector :: ILL input length output => input -> Vector length output
then
v :: Vector 3 Int v = vector (1,2,3) x :: Vector 0 Double x = vector $ ZeroTuple @Double y :: Vector 1 Double y = vector (OneTuple 1) z :: Vector 2 String z = vector ("Hello", "World")
If want matrix literals you can write a function
matrix :: (ILL row width ty, ILL matrix height row) => matrix -> Matrix width height ty
then
a :: Matrix 0 0 Bool a = matrix $ ZeroTuple @(ZeroTuple Bool) b :: Matrix 1 2 String b = matrix $ OneTuple ("Hello","World") c :: Matrix 4 5 Double c = matrix ((1,2,3,0,0) ,(4,5,6,0,0) ,(7,8,9,0,0) ,(0,0,0,0,0))
The full code is in test/Docs.hs
This only supports literals of length up to 20, though that can be easily extended using the code generator in src/Data/IndexedListLiterals.hs
Downloads
- indexed-list-literals-0.1.0.0.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.2.0.0, 0.2.1.0, 0.2.1.1, 0.2.1.2, 0.2.1.3 (info) |
---|---|
Change log | ChangeLog.md |
Dependencies | base (>=4.10 && <4.11), OneTuple (>=0.2.1) [details] |
License | BSD-3-Clause |
Author | David Millar-Durrant |
Maintainer | dmillardurrant@gmail.com |
Revised | Revision 1 made by GeorgeWilson at 2018-04-19T00:21:26Z |
Category | Data |
Home page | https://github.com/davidm-d/indexed-list-literals |
Source repo | head: git clone https://github.com/davidm-d/indexed-list-literals |
Uploaded | by DavidMD at 2018-02-10T17:21:43Z |
Distributions | Arch:0.2.1.3, LTSHaskell:0.2.1.3, NixOS:0.2.1.3, Stackage:0.2.1.3 |
Reverse Dependencies | 2 direct, 81 indirect [details] |
Downloads | 10276 total (95 in the last 30 days) |
Rating | 2.0 (votes: 1) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2018-02-10 [all 1 reports] |