1 author: Julien Moutinho <julm+lol@autogeree.net>
2 -- bug-reports: http://doc.autogeree.net/lol/bugs
9 Demonstration code gathering important ideas from
10 the <http://okmij.org/ftp/tagless-final/ Tagless-Final> approach
11 to Embedded DSL (Domain-Specific Language)
12 of Oleg Kiselyov, Jacques Carette and Chung-chieh Shan,
13 also implementing a way to use it as non-Embedded DSL.
15 For a few examples types (function, boolean, integer)
16 a so-called /symantic/ type class defines a /syntax/
17 whose instances are interpreters
18 defining each one a new /semantic/
19 (computing a Haskell term, serializing, optimizing, …).
21 Combining the methods of those /symantic/ type classes
22 form an EDSL in which one can write /symantic expressions/ at developing time,
23 a next step is then to be able to write such /symantic expressions/ at runtime,
24 while preserving their extensibility and interpretability.
26 In this direction, the main improvements are:
28 * Reading /symantic expressions/
29 from a raw AST (Abstract Syntax Tree);
30 including /call-by-value/ and /call-by-need/ (lazy)
33 * Keeping this reading recombinable
34 and extensible with new /symantic expressions/;
35 reusing previous readers without alterating them.
37 * Keeping those read /symantic expressions/
38 usable with multiple interpreters.
40 Your comments, problem reports, questions are very welcome!
43 -- homepage: http://pad.autogeree.net/informatique/lol/symantic/
46 maintainer: Julien Moutinho <julm+lol@autogeree.net>
48 stability: experimental
49 synopsis: Demo of Typed Tagless-Final Higher-Order Extensible DSL
50 tested-with: GHC==7.10.3
53 Source-Repository head
54 location: git://git.autogeree.net/lol
59 Description: Turn on development settings.
64 Description: Dump some intermediate files.
69 Description: Turn on profiling settings.
74 Description: Enable threads.
79 ghc-options: -Wall -fno-warn-tabs
81 cpp-options: -DDEVELOPMENT
84 -- -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures
85 -- -fno-warn-type-defaults -fno-warn-orphans
87 ghc-options: -ddump-simpl -ddump-stg -ddump-to-file
89 cpp-options: -DPROFILING
90 ghc-options: -fprof-auto
91 default-language: Haskell2010
93 Language.LOL.Symantic.Lib.Control.Monad
94 Language.LOL.Symantic.Expr
95 Language.LOL.Symantic.Expr.Bool
96 Language.LOL.Symantic.Expr.Common
97 Language.LOL.Symantic.Expr.Lambda
98 Language.LOL.Symantic.Expr.Int
99 Language.LOL.Symantic.AST
100 Language.LOL.Symantic.Repr
101 Language.LOL.Symantic.Repr.Dup
102 Language.LOL.Symantic.Repr.Host
103 Language.LOL.Symantic.Repr.String
104 Language.LOL.Symantic.Type
105 Language.LOL.Symantic.Type.Bool
106 Language.LOL.Symantic.Type.Common
107 Language.LOL.Symantic.Type.Fun
108 Language.LOL.Symantic.Type.Int
109 Language.LOL.Symantic.Trans
110 Language.LOL.Symantic.Trans.Common
111 Language.LOL.Symantic.Trans.Bool
115 , monad-classes >= 0.3.1.1
120 Test-Suite lol-symantic-test
121 type: exitcode-stdio-1.0
124 default-language: Haskell2010
125 ghc-options: -Wall -fno-warn-tabs
127 hs-source-dirs: Language/LOL/Symantic
139 ghc-options: -threaded -rtsopts -with-rtsopts=-N
141 cpp-options: -DDEVELOPMENT
144 cpp-options: -DPROFILING
145 ghc-options: -fprof-auto