indexed-list-literals: Type safe indexed list literals

[ bsd3, data, library ] [ Propose Tags ] [ Report a vulnerability ]

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

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

Package maintainers

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 && <4.14), Only (>=0.1 && <0.2) [details]
License BSD-3-Clause
Author David Millar-Durrant
Maintainer dmillardurrant@gmail.com
Revised Revision 1 made by GeorgeWilson at 2019-09-15T22:03:45Z
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-10-06T11:39:32Z
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-10-06 [all 1 reports]