]> 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 Library 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 A so-called /symantic/ type class defines a /syntax/
16 and each of its instances defines a new /semantic/
17 (computing a Haskell term, serializing, optimizing, …).
18 .
19 Combining the methods of those /symantic/ type classes
20 gives rise to a DSL within which one can
21 write /symantic/ expressions at developing time;
22 but in order to handle such expression when entered by an end-user,
23 one has to be able to construct it at runtime.
24 .
25 This library (including its Test.hs files) demonstrates this
26 for a few usual types and methods, by:
27 .
28 * Parsing a /symantic/ expression
29 from an AST (Abstract Syntax Tree).
30 .
31 * Removing or adding /symantic/ parsers
32 by fully reusing old parsers
33 (i.e. without copying or alterating them).
34 .
35 * Interpreting a /symantic/ expression
36 multiple times and with different interpreters
37 without reparsing the expression.
38 .
39 Hence, one can select all or a few expressions (and associated types)
40 of this library, add its own, parse them at runtime from its own AST,
41 and then interpret them at will.
42 .
43 Your comments, problem reports, or questions are very welcome! :-)
44 extra-source-files:
45 extra-tmp-files:
46 -- homepage: http://pad.autogeree.net/informatique/lol/symantic/
47 license: GPL-3
48 license-file: COPYING
49 maintainer: Julien Moutinho <julm+lol@autogeree.net>
50 name: lol-symantic
51 stability: experimental
52 synopsis: Typed Tagless-Final Higher-Order Extensible DSL
53 tested-with: GHC==7.10.3
54 version: 1.20161008
55
56 Source-Repository head
57 location: git://git.autogeree.net/lol
58 type: git
59
60 Flag dev
61 Default: False
62 Description: Turn on development settings.
63 Manual: True
64
65 Flag dump
66 Default: False
67 Description: Dump some intermediate files.
68 Manual: True
69
70 Flag prof
71 Default: False
72 Description: Turn on profiling settings.
73 Manual: True
74
75 Flag threaded
76 Default: False
77 Description: Enable threads.
78 Manual: True
79
80 Library
81 default-extensions:
82 ghc-options: -Wall -fno-warn-tabs
83 if flag(dev)
84 cpp-options: -DDEVELOPMENT
85 ghc-options:
86 -- -ddump-splices
87 -- -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures
88 -- -fno-warn-type-defaults -fno-warn-orphans
89 if flag(dump)
90 ghc-options: -ddump-simpl -ddump-stg -ddump-to-file
91 if flag(prof)
92 cpp-options: -DPROFILING
93 ghc-options: -fprof-auto
94 default-language: Haskell2010
95 exposed-modules:
96 Language.LOL.Symantic
97 Language.LOL.Symantic.Expr
98 Language.LOL.Symantic.Expr.Bool
99 Language.LOL.Symantic.Expr.Common
100 Language.LOL.Symantic.Expr.Int
101 Language.LOL.Symantic.Expr.Lambda
102 Language.LOL.Symantic.Expr.Maybe
103 Language.LOL.Symantic.Expr.If
104 Language.LOL.Symantic.Expr.Eq
105 Language.LOL.Symantic.Expr.Ord
106 Language.LOL.Symantic.Lib.Control.Monad
107 Language.LOL.Symantic.Lib.Data.Peano
108 Language.LOL.Symantic.Repr
109 Language.LOL.Symantic.Repr.Dup
110 Language.LOL.Symantic.Repr.Host
111 Language.LOL.Symantic.Repr.Text
112 Language.LOL.Symantic.Trans
113 Language.LOL.Symantic.Trans.Bool
114 Language.LOL.Symantic.Trans.Bool.Const
115 Language.LOL.Symantic.Trans.Common
116 Language.LOL.Symantic.Type
117 Language.LOL.Symantic.Type.Unit
118 Language.LOL.Symantic.Type.Bool
119 Language.LOL.Symantic.Type.Common
120 Language.LOL.Symantic.Type.Fun
121 Language.LOL.Symantic.Type.Int
122 Language.LOL.Symantic.Type.Maybe
123 Language.LOL.Symantic.Type.Var
124 -- Language.LOL.Symantic.Expr.Ordering
125 build-depends:
126 base >= 4.6 && < 5
127 , ghc-prim
128 , monad-classes >= 0.3.1.1
129 , transformers
130 , text
131
132 Test-Suite lol-symantic-test
133 type: exitcode-stdio-1.0
134 default-extensions:
135 OverloadedStrings
136 default-language: Haskell2010
137 ghc-options: -Wall -fno-warn-tabs
138 -main-is Test
139 hs-source-dirs: Language/LOL/Symantic
140 main-is: Test.hs
141 other-modules:
142 AST.Test
143 Expr.Bool.Test
144 Expr.Eq.Test
145 Expr.If.Test
146 Expr.Int.Test
147 Expr.Lambda.Test
148 Expr.Maybe.Test
149 Expr.Test
150 Repr.Host.Test
151 Repr.Test
152 Repr.Text.Test
153 Trans.Bool.Const.Test
154 Trans.Bool.Test
155 Trans.Test
156 Type.Test
157 if flag(threaded)
158 ghc-options: -threaded -rtsopts -with-rtsopts=-N
159 if flag(dev)
160 cpp-options: -DDEVELOPMENT
161 ghc-options:
162 if flag(prof)
163 cpp-options: -DPROFILING
164 ghc-options: -fprof-auto
165 build-depends:
166 base >= 4.6 && < 5
167 , transformers
168 , tasty >= 0.11
169 , tasty-hunit
170 , text
171 , lol-symantic