1 author: Julien Moutinho <julm+lol@autogeree.net>
2 -- bug-reports: http://doc.autogeree.net/lol/bugs
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.
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, …).
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.
25 This library (including its Test.hs files) demonstrates this
26 for a few usual types and methods, by:
28 * Parsing a /symantic/ expression
29 from an AST (Abstract Syntax Tree).
31 * Removing or adding /symantic/ parsers
32 by fully reusing old parsers
33 (i.e. without copying or alterating them).
35 * Interpreting a /symantic/ expression
36 multiple times and with different interpreters
37 without reparsing the expression.
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.
43 Your comments, problem reports, or questions are very welcome! :-)
46 -- homepage: http://pad.autogeree.net/informatique/lol/symantic/
49 maintainer: Julien Moutinho <julm+lol@autogeree.net>
51 stability: experimental
52 synopsis: Typed Tagless-Final Higher-Order Extensible DSL
53 tested-with: GHC==7.10.3
56 Source-Repository head
57 location: git://git.autogeree.net/lol
62 Description: Turn on development settings.
67 Description: Dump some intermediate files.
72 Description: Turn on profiling settings.
77 Description: Enable threads.
82 ghc-options: -Wall -fno-warn-tabs
84 cpp-options: -DDEVELOPMENT
87 -- -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures
88 -- -fno-warn-type-defaults -fno-warn-orphans
90 ghc-options: -ddump-simpl -ddump-stg -ddump-to-file
92 cpp-options: -DPROFILING
93 ghc-options: -fprof-auto
94 default-language: Haskell2010
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.Lib.Control.Monad
106 Language.LOL.Symantic.Lib.Data.Peano
107 Language.LOL.Symantic.Repr
108 Language.LOL.Symantic.Repr.Dup
109 Language.LOL.Symantic.Repr.Host
110 Language.LOL.Symantic.Repr.Text
111 Language.LOL.Symantic.Trans
112 Language.LOL.Symantic.Trans.Bool
113 Language.LOL.Symantic.Trans.Bool.Const
114 Language.LOL.Symantic.Trans.Common
115 Language.LOL.Symantic.Type
116 Language.LOL.Symantic.Type.Unit
117 Language.LOL.Symantic.Type.Bool
118 Language.LOL.Symantic.Type.Common
119 Language.LOL.Symantic.Type.Fun
120 Language.LOL.Symantic.Type.Int
121 Language.LOL.Symantic.Type.Maybe
122 Language.LOL.Symantic.Type.Var
126 , monad-classes >= 0.3.1.1
130 Test-Suite lol-symantic-test
131 type: exitcode-stdio-1.0
134 default-language: Haskell2010
135 ghc-options: -Wall -fno-warn-tabs
137 hs-source-dirs: Language/LOL/Symantic
151 Trans.Bool.Const.Test
156 ghc-options: -threaded -rtsopts -with-rtsopts=-N
158 cpp-options: -DDEVELOPMENT
161 cpp-options: -DPROFILING
162 ghc-options: -fprof-auto