]> Git — Sourcephile - haskell/symantic.git/blob - symantic.cabal
Integer, Integral, Num
[haskell/symantic.git] / symantic.cabal
1 author: Julien Moutinho <julm+symantic@autogeree.net>
2 -- bug-reports: http://doc.autogeree.net/symantic/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 main ideas from the
10 <http://okmij.org/ftp/tagless-final/ Tagless-Final>
11 approach of embedded DSL (Domain-Specific Language)
12 developed by Jacques Carette, Oleg Kiselyov and Chung-chieh Shan,
13 and pursuing their work to make it usable 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 altering 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 One important drawback of this flexibility
44 is the introduction of a lot of type constraints;
45 those may be more readable directly in the source code
46 than in its Haddock rendition.
47 .
48 Your comments, problem reports, or questions are very welcome! :-)
49 .
50 NOTE: alternative libraries to do more or less the same things
51 include: <https://hackage.haskell.org/package/syntactic syntactic>.
52 extra-source-files:
53 extra-tmp-files:
54 -- homepage: http://pad.autogeree.net/informatique/symantic/
55 license: GPL-3
56 license-file: COPYING
57 maintainer: Julien Moutinho <julm+symantic@autogeree.net>
58 name: symantic
59 stability: experimental
60 synopsis: Library for Typed Tagless-Final Higher-Order Extensible DSL
61 tested-with: GHC==7.10.3
62 version: 1.20161112
63
64 Source-Repository head
65 location: git://git.autogeree.net/symantic
66 type: git
67
68 Flag dev
69 Default: False
70 Description: Turn on development settings.
71 Manual: True
72
73 Flag dump
74 Default: False
75 Description: Dump some intermediate files.
76 Manual: True
77
78 Flag prof
79 Default: False
80 Description: Turn on profiling settings.
81 Manual: True
82
83 Flag threaded
84 Default: False
85 Description: Enable threads.
86 Manual: True
87
88 Library
89 default-extensions:
90 ghc-options: -Wall -fno-warn-tabs
91 if flag(dev)
92 cpp-options: -DDEVELOPMENT
93 ghc-options:
94 -- -ddump-splices
95 -- -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures
96 -- -fno-warn-type-defaults -fno-warn-orphans
97 if flag(dump)
98 ghc-options: -ddump-simpl -ddump-stg -ddump-to-file
99 if flag(prof)
100 cpp-options: -DPROFILING
101 ghc-options: -fprof-auto
102 default-language: Haskell2010
103 exposed-modules:
104 Language.Symantic
105 Language.Symantic.Expr
106 Language.Symantic.Expr.Alt
107 Language.Symantic.Expr.Applicative
108 Language.Symantic.Expr.Bool
109 Language.Symantic.Expr.Either
110 Language.Symantic.Expr.Eq
111 Language.Symantic.Expr.Error
112 Language.Symantic.Expr.Foldable
113 Language.Symantic.Expr.From
114 Language.Symantic.Expr.Functor
115 Language.Symantic.Expr.If
116 Language.Symantic.Expr.Int
117 Language.Symantic.Expr.Integer
118 Language.Symantic.Expr.Integral
119 Language.Symantic.Expr.IO
120 Language.Symantic.Expr.Lambda
121 Language.Symantic.Expr.List
122 Language.Symantic.Expr.Map
123 Language.Symantic.Expr.Maybe
124 Language.Symantic.Expr.Monad
125 Language.Symantic.Expr.Monoid
126 Language.Symantic.Expr.Num
127 Language.Symantic.Expr.Ord
128 Language.Symantic.Expr.Root
129 Language.Symantic.Expr.Text
130 Language.Symantic.Expr.Traversable
131 Language.Symantic.Expr.Tuple
132 Language.Symantic.Lib.Control.Monad
133 Language.Symantic.Lib.Data.Bool
134 Language.Symantic.Lib.Data.Peano
135 Language.Symantic.Repr
136 Language.Symantic.Repr.Dup
137 Language.Symantic.Repr.Host
138 Language.Symantic.Repr.Text
139 Language.Symantic.Trans
140 Language.Symantic.Trans.Bool
141 Language.Symantic.Trans.Bool.Const
142 Language.Symantic.Trans.Common
143 Language.Symantic.Type
144 Language.Symantic.Type.Alt
145 Language.Symantic.Type.Bool
146 Language.Symantic.Type.Either
147 Language.Symantic.Type.Error
148 Language.Symantic.Type.Fun
149 Language.Symantic.Type.Int
150 Language.Symantic.Type.Integer
151 Language.Symantic.Type.IO
152 Language.Symantic.Type.List
153 Language.Symantic.Type.Map
154 Language.Symantic.Type.Maybe
155 Language.Symantic.Type.Ordering
156 Language.Symantic.Type.Root
157 Language.Symantic.Type.Text
158 Language.Symantic.Type.Tuple
159 Language.Symantic.Type.Type0
160 Language.Symantic.Type.Type1
161 Language.Symantic.Type.Type2
162 Language.Symantic.Type.Unit
163 Language.Symantic.Type.Var
164 build-depends:
165 base >= 4.6 && < 5
166 , containers
167 , ghc-prim
168 , transformers
169 , text
170
171 Test-Suite symantic-test
172 type: exitcode-stdio-1.0
173 default-extensions:
174 OverloadedStrings
175 default-language: Haskell2010
176 ghc-options: -Wall -fno-warn-tabs
177 -main-is Test
178 hs-source-dirs: Language/Symantic
179 main-is: Test.hs
180 other-modules:
181 AST.Test
182 Expr.Applicative.Test
183 Expr.Bool.Test
184 Expr.Eq.Test
185 Expr.Foldable.Test
186 Expr.Functor.Test
187 Expr.If.Test
188 Expr.Int.Test
189 Expr.Lambda.Test
190 Expr.List.Test
191 Expr.Map.Test
192 Expr.Maybe.Test
193 Expr.Monad.Test
194 Expr.Test
195 Expr.Traversable.Test
196 Repr.Host.Test
197 Repr.Test
198 Repr.Text.Test
199 Trans.Bool.Const.Test
200 Trans.Bool.Test
201 Trans.Test
202 Type.Test
203 if flag(threaded)
204 ghc-options: -threaded -rtsopts -with-rtsopts=-N
205 if flag(dev)
206 cpp-options: -DDEVELOPMENT
207 ghc-options:
208 if flag(prof)
209 cpp-options: -DPROFILING
210 ghc-options: -fprof-auto
211 build-depends:
212 base >= 4.6 && < 5
213 , containers
214 , transformers
215 , tasty >= 0.11
216 , tasty-hunit
217 , text
218 , symantic