-
Notifications
You must be signed in to change notification settings - Fork 2
/
indexed-list-literals.cabal
76 lines (71 loc) · 2.32 KB
/
indexed-list-literals.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
-- Initial indexed-container-literals.cabal generated by cabal init. For
-- further documentation, see http://haskell.org/cabal/users-guide/
name: indexed-list-literals
version: 0.2.1.3
synopsis: Type safe indexed list literals
homepage: https://github.com/davidm-d/indexed-list-literals
license: BSD3
license-file: LICENSE
author: David Millar-Durrant
maintainer: [email protected]
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
-- copyright:
category: Data
build-type: Simple
extra-source-files: ChangeLog.md
cabal-version: >=1.10
library
exposed-modules: Data.IndexedListLiterals
-- other-modules:
-- other-extensions:
build-depends: base >= 4.9 && < 5
, Only >= 0.1 && < 0.2
hs-source-dirs: src
default-language: Haskell2010
test-suite IndexedListLiterals-test
type: exitcode-stdio-1.0
main-is: Docs.hs
build-depends: base, indexed-list-literals, hspec
hs-source-dirs: test
default-language: Haskell2010
source-repository head
type: git
location: https://github.com/davidm-d/indexed-list-literals