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