indexed-list-literals: Type safe indexed list literals
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 (Only 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 $ Only ("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.2.1.3.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
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.9 && <5), Only (>=0.1 && <0.2) [details] |
License | BSD-3-Clause |
Author | David Millar-Durrant |
Maintainer | dmillardurrant@gmail.com |
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 2020-04-30T18:19: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 | 10169 total (67 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 2020-04-30 [all 1 reports] |