]> Git — Sourcephile - haskell/symantic.git/blob - symantic.cabal
init
[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 important 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 Your comments, problem reports, or questions are very welcome! :-)
44 .
45 NOTE: alternative libraries to do more or less the same things
46 include: <https://hackage.haskell.org/package/syntactic syntactic>.
47 extra-source-files:
48 extra-tmp-files:
49 -- homepage: http://pad.autogeree.net/informatique/symantic/
50 license: GPL-3
51 license-file: COPYING
52 maintainer: Julien Moutinho <julm+symantic@autogeree.net>
53 name: symantic
54 stability: experimental
55 synopsis: Library for Typed Tagless-Final Higher-Order Extensible DSL
56 tested-with: GHC==7.10.3
57 version: 1.20161008
58
59 Source-Repository head
60 location: git://git.autogeree.net/symantic
61 type: git
62
63 Flag dev
64 Default: False
65 Description: Turn on development settings.
66 Manual: True
67
68 Flag dump
69 Default: False
70 Description: Dump some intermediate files.
71 Manual: True
72
73 Flag prof
74 Default: False
75 Description: Turn on profiling settings.
76 Manual: True
77
78 Flag threaded
79 Default: False
80 Description: Enable threads.
81 Manual: True
82
83 Library
84 default-extensions:
85 ghc-options: -Wall -fno-warn-tabs
86 if flag(dev)
87 cpp-options: -DDEVELOPMENT
88 ghc-options:
89 -- -ddump-splices
90 -- -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures
91 -- -fno-warn-type-defaults -fno-warn-orphans
92 if flag(dump)
93 ghc-options: -ddump-simpl -ddump-stg -ddump-to-file
94 if flag(prof)
95 cpp-options: -DPROFILING
96 ghc-options: -fprof-auto
97 default-language: Haskell2010
98 exposed-modules:
99 Language.Symantic
100 Language.Symantic.Expr
101 Language.Symantic.Expr.Bool
102 Language.Symantic.Expr.Common
103 Language.Symantic.Expr.Eq
104 Language.Symantic.Expr.If
105 Language.Symantic.Expr.Int
106 Language.Symantic.Expr.Lambda
107 Language.Symantic.Expr.List
108 Language.Symantic.Expr.Map
109 Language.Symantic.Expr.Maybe
110 Language.Symantic.Expr.Ord
111 Language.Symantic.Expr.Tuple
112 Language.Symantic.Lib.Control.Monad
113 Language.Symantic.Lib.Data.Peano
114 Language.Symantic.Repr
115 Language.Symantic.Repr.Dup
116 Language.Symantic.Repr.Host
117 Language.Symantic.Repr.Text
118 Language.Symantic.Trans
119 Language.Symantic.Trans.Bool
120 Language.Symantic.Trans.Bool.Const
121 Language.Symantic.Trans.Common
122 Language.Symantic.Type
123 Language.Symantic.Type.Bool
124 Language.Symantic.Type.Common
125 Language.Symantic.Type.Fun
126 Language.Symantic.Type.Int
127 Language.Symantic.Type.List
128 Language.Symantic.Type.Map
129 Language.Symantic.Type.Maybe
130 Language.Symantic.Type.Ordering
131 Language.Symantic.Type.Tuple
132 Language.Symantic.Type.Unit
133 Language.Symantic.Type.Var
134 build-depends:
135 base >= 4.6 && < 5
136 , containers
137 , ghc-prim
138 -- , monad-classes >= 0.3.1.1
139 , transformers
140 , text
141
142 Test-Suite symantic-test
143 type: exitcode-stdio-1.0
144 default-extensions:
145 OverloadedStrings
146 default-language: Haskell2010
147 ghc-options: -Wall -fno-warn-tabs
148 -main-is Test
149 hs-source-dirs: Language/Symantic
150 main-is: Test.hs
151 other-modules:
152 AST.Test
153 Expr.Bool.Test
154 Expr.Eq.Test
155 Expr.If.Test
156 Expr.Int.Test
157 Expr.Lambda.Test
158 Expr.List.Test
159 Expr.Maybe.Test
160 Expr.Test
161 Repr.Host.Test
162 Repr.Test
163 Repr.Text.Test
164 Trans.Bool.Const.Test
165 Trans.Bool.Test
166 Trans.Test
167 Type.Test
168 if flag(threaded)
169 ghc-options: -threaded -rtsopts -with-rtsopts=-N
170 if flag(dev)
171 cpp-options: -DDEVELOPMENT
172 ghc-options:
173 if flag(prof)
174 cpp-options: -DPROFILING
175 ghc-options: -fprof-auto
176 build-depends:
177 base >= 4.6 && < 5
178 , transformers
179 , tasty >= 0.11
180 , tasty-hunit
181 , text
182 , symantic