]> Git — Sourcephile - haskell/symantic.git/blob - symantic.cabal
Eq, Ord
[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.Char
110 Language.Symantic.Expr.Either
111 Language.Symantic.Expr.Eq
112 Language.Symantic.Expr.Error
113 Language.Symantic.Expr.Foldable
114 Language.Symantic.Expr.From
115 Language.Symantic.Expr.Functor
116 Language.Symantic.Expr.If
117 Language.Symantic.Expr.Int
118 Language.Symantic.Expr.Integer
119 Language.Symantic.Expr.Integral
120 Language.Symantic.Expr.IO
121 Language.Symantic.Expr.Lambda
122 Language.Symantic.Expr.List
123 Language.Symantic.Expr.Map
124 Language.Symantic.Expr.Maybe
125 Language.Symantic.Expr.Monad
126 Language.Symantic.Expr.MonoFunctor
127 Language.Symantic.Expr.Monoid
128 Language.Symantic.Expr.Num
129 Language.Symantic.Expr.Ord
130 Language.Symantic.Expr.Root
131 Language.Symantic.Expr.Text
132 Language.Symantic.Expr.Traversable
133 Language.Symantic.Expr.Tuple
134 Language.Symantic.Lib.Control.Monad
135 Language.Symantic.Lib.Data.Bool
136 Language.Symantic.Lib.Data.Peano
137 Language.Symantic.Repr
138 Language.Symantic.Repr.Dup
139 Language.Symantic.Repr.Host
140 Language.Symantic.Repr.Text
141 Language.Symantic.Trans
142 Language.Symantic.Trans.Bool
143 Language.Symantic.Trans.Bool.Const
144 Language.Symantic.Trans.Common
145 Language.Symantic.Type
146 Language.Symantic.Type.Alt
147 Language.Symantic.Type.Bool
148 Language.Symantic.Type.Char
149 Language.Symantic.Type.Constraint
150 Language.Symantic.Type.Either
151 Language.Symantic.Type.Error
152 Language.Symantic.Type.Family
153 Language.Symantic.Type.Fun
154 Language.Symantic.Type.Int
155 Language.Symantic.Type.Integer
156 Language.Symantic.Type.IO
157 Language.Symantic.Type.List
158 Language.Symantic.Type.Map
159 Language.Symantic.Type.Maybe
160 Language.Symantic.Type.Ordering
161 Language.Symantic.Type.Root
162 Language.Symantic.Type.Text
163 Language.Symantic.Type.Tuple
164 Language.Symantic.Type.Type0
165 Language.Symantic.Type.Type1
166 Language.Symantic.Type.Type2
167 Language.Symantic.Type.Unit
168 Language.Symantic.Type.Var
169 build-depends:
170 base >= 4.6 && < 5
171 , containers
172 , ghc-prim
173 , mono-traversable
174 , transformers
175 , text
176
177 Test-Suite symantic-test
178 type: exitcode-stdio-1.0
179 default-extensions:
180 OverloadedStrings
181 default-language: Haskell2010
182 ghc-options: -Wall -fno-warn-tabs
183 -main-is Test
184 hs-source-dirs: Language/Symantic
185 main-is: Test.hs
186 other-modules:
187 AST.Test
188 Expr.Applicative.Test
189 Expr.Bool.Test
190 Expr.Eq.Test
191 Expr.Foldable.Test
192 Expr.Functor.Test
193 Expr.If.Test
194 Expr.Int.Test
195 Expr.Lambda.Test
196 Expr.List.Test
197 Expr.Map.Test
198 Expr.Maybe.Test
199 Expr.Monad.Test
200 Expr.MonoFunctor.Test
201 Expr.Test
202 Expr.Traversable.Test
203 Repr.Host.Test
204 Repr.Test
205 Repr.Text.Test
206 Trans.Bool.Const.Test
207 Trans.Bool.Test
208 Trans.Test
209 Type.Test
210 if flag(threaded)
211 ghc-options: -threaded -rtsopts -with-rtsopts=-N
212 if flag(dev)
213 cpp-options: -DDEVELOPMENT
214 ghc-options:
215 if flag(prof)
216 cpp-options: -DPROFILING
217 ghc-options: -fprof-auto
218 build-depends:
219 base >= 4.6 && < 5
220 , containers
221 , mono-traversable
222 , transformers
223 , tasty >= 0.11
224 , tasty-hunit
225 , text
226 , symantic