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, 87 indirect [details] |
| Downloads | 10604 total (14 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] |