indexed-list-literals: Type safe indexed list literals
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
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
Properties
Versions | 0.1.0.0, 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 |
---|---|
Change log | ChangeLog.md |
Dependencies | base (>=4.9 && <=4.11), OneTuple (>=0.2.1) [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 2018-02-10T17:19:53Z |
Modules
[Index]
Downloads
- indexed-list-literals-0.1.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees