indexed-list-literals

Type safe indexed list literals

https://github.com/davidm-d/indexed-list-literals

 Version on this page: 0.2.1.2 LTS Haskell 18.11: 0.2.1.3 Stackage Nightly 2021-09-18: 0.2.1.3 Latest on Hackage: 0.2.1.3

See all snapshots `indexed-list-literals` appears in

This version can be pinned in stack with:`indexed-list-literals-0.2.1.2@sha256:0760e2a86605b5557af7180d4d50e317d75a5a92ca12aaabb6948ce97b7a94ac,2373`

Module documentation for 0.2.1.2

Depends on 2 packages(full list with versions):
Used by 1 package in lts-13.19(full list with versions):

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

Changes

Bumped the version of dependencies for GHC 8.6