# The indexed-list-literals package

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.1 (info) |
---|---|

Change log | ChangeLog.md |

Dependencies | base (>=4.9 && <=4.11), OneTuple (>=0.2.1) [details] |

License | BSD3 |

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 | Sun Feb 11 16:23:16 UTC 2018 by DavidMD |

Distributions | NixOS:0.1.0.1, Stackage:0.1.0.1 |

Downloads | 45 total (45 in the last 30 days) |

Rating | 2.0 (votes: 1) [estimated by rule of succession] |

Your Rating | |

Status | Docs available [build log] Last success reported on 2018-02-11 [all 1 reports] Hackage Matrix CI |

## Downloads

- indexed-list-literals-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)