]> Git — Sourcephile - haskell/symantic.git/blob - lol-symantic.cabal
init
[haskell/symantic.git] / lol-symantic.cabal
1 author: Julien Moutinho <julm+lol@autogeree.net>
2 -- bug-reports: http://doc.autogeree.net/lol/bugs
3 build-type: Simple
4 cabal-version: >= 1.10
5 category: Language
6 -- data-dir: data
7 -- data-files:
8 description:
9 Demonstration code gathering important ideas from the
10 <http://okmij.org/ftp/tagless-final/ Tagless-Final>
11 approach to Embedded DSL (Domain-Specific Language)
12 developed by Jacques Carette, Oleg Kiselyov and Chung-chieh Shan,
13 and pursuing this work to use it as a non-Embedded DSL.
14 .
15 For a few example types (function, 'Bool', 'Int', 'Maybe')
16 a so-called /symantic/ type class defines a /syntax/
17 and each of its instances defines a new /semantic/
18 (computing a Haskell term, serializing, optimizing, …).
19 .
20 Combining the methods of those /symantic/ type classes
21 gives rise to a DSL within which one can
22 write /symantic/ expressions at developing time;
23 but in order to handle such expression when entered by an end-user,
24 one has to be able to construct it at runtime,
25 that is, to be able to:
26 .
27 * Parse a /symantic/ expression
28 from an AST (Abstract Syntax Tree).
29 .
30 * Remove or add /symantic/ parsers
31 by fully reusing old parsers
32 (i.e. without copying or alterating them).
33 .
34 * Interpret a /symantic/ expression
35 multiple times and with different interpreters
36 without reparsing the expression.
37 .
38 This is what this code (including its Test.hs files) demonstrates.
39 Your comments, problem reports, or questions are very welcome! :-)
40 extra-source-files:
41 extra-tmp-files:
42 -- homepage: http://pad.autogeree.net/informatique/lol/symantic/
43 license: GPL-3
44 license-file: COPYING
45 maintainer: Julien Moutinho <julm+lol@autogeree.net>
46 name: lol-symantic
47 stability: experimental
48 synopsis: Demo of Typed Tagless-Final Higher-Order Extensible DSL
49 tested-with: GHC==7.10.3
50 version: 1.20161002
51
52 Source-Repository head
53 location: git://git.autogeree.net/lol
54 type: git
55
56 Flag dev
57 Default: False
58 Description: Turn on development settings.
59 Manual: True
60
61 Flag dump
62 Default: False
63 Description: Dump some intermediate files.
64 Manual: True
65
66 Flag prof
67 Default: False
68 Description: Turn on profiling settings.
69 Manual: True
70
71 Flag threaded
72 Default: False
73 Description: Enable threads.
74 Manual: True
75
76 Library
77 default-extensions:
78 ghc-options: -Wall -fno-warn-tabs
79 if flag(dev)
80 cpp-options: -DDEVELOPMENT
81 ghc-options:
82 -- -ddump-splices
83 -- -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures
84 -- -fno-warn-type-defaults -fno-warn-orphans
85 if flag(dump)
86 ghc-options: -ddump-simpl -ddump-stg -ddump-to-file
87 if flag(prof)
88 cpp-options: -DPROFILING
89 ghc-options: -fprof-auto
90 default-language: Haskell2010
91 exposed-modules:
92 Language.LOL.Symantic
93 Language.LOL.Symantic.AST
94 Language.LOL.Symantic.Expr
95 Language.LOL.Symantic.Expr.Bool
96 Language.LOL.Symantic.Expr.Common
97 Language.LOL.Symantic.Expr.Int
98 Language.LOL.Symantic.Expr.Lambda
99 Language.LOL.Symantic.Expr.Maybe
100 Language.LOL.Symantic.Lib.Control.Monad
101 Language.LOL.Symantic.Repr
102 Language.LOL.Symantic.Repr.Dup
103 Language.LOL.Symantic.Repr.Host
104 Language.LOL.Symantic.Repr.String
105 Language.LOL.Symantic.Trans
106 Language.LOL.Symantic.Trans.Bool
107 Language.LOL.Symantic.Trans.Bool.Const
108 Language.LOL.Symantic.Trans.Common
109 Language.LOL.Symantic.Type
110 Language.LOL.Symantic.Type.Bool
111 Language.LOL.Symantic.Type.Common
112 Language.LOL.Symantic.Type.Fun
113 Language.LOL.Symantic.Type.Int
114 Language.LOL.Symantic.Type.Maybe
115 build-depends:
116 base >= 4.6 && < 5
117 , ghc-prim
118 , monad-classes >= 0.3.1.1
119 , peano
120 , transformers
121 , text
122
123 Test-Suite lol-symantic-test
124 type: exitcode-stdio-1.0
125 default-extensions:
126 OverloadedStrings
127 default-language: Haskell2010
128 ghc-options: -Wall -fno-warn-tabs
129 -main-is Test
130 hs-source-dirs: Language/LOL/Symantic
131 main-is: Test.hs
132 other-modules:
133 AST.Test
134 Expr.Bool.Test
135 Expr.Int.Test
136 Expr.Lambda.Test
137 Expr.Maybe.Test
138 Expr.Test
139 Repr.Host.Test
140 Repr.String.Test
141 Repr.Test
142 Trans.Bool.Const.Test
143 Trans.Bool.Test
144 Trans.Test
145 Type.Test
146 if flag(threaded)
147 ghc-options: -threaded -rtsopts -with-rtsopts=-N
148 if flag(dev)
149 cpp-options: -DDEVELOPMENT
150 ghc-options:
151 if flag(prof)
152 cpp-options: -DPROFILING
153 ghc-options: -fprof-auto
154 build-depends:
155 base >= 4.6 && < 5
156 , transformers
157 , tasty >= 0.11
158 , tasty-hunit
159 , lol-symantic