The latest version of indexed-list-literals is 0.2.1.3-0.
indexed-list-literals
Version 0.2.0.0 revision 0 uploaded by DavidMD.
Package meta
- Synopsis
- Type safe indexed list literals
- Description
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
- Author
- David Millar-Durrant
- Bug reports
- n/a
- Category
- Data
- Copyright
- n/a
- Homepage
- https://github.com/davidm-d/indexed-list-literals
- Maintainer
- dmillardurrant@gmail.com
- Package URL
- n/a
- Stability
- n/a