author: Julien Moutinho -- bug-reports: http://doc.autogeree.net/lol/bugs build-type: Simple cabal-version: >= 1.10 category: Language -- data-dir: data -- data-files: description: Demonstration code gathering important ideas from the approach to Embedded DSL (Domain-Specific Language) of Oleg Kiselyov, Jacques Carette and Chung-chieh Shan, also implementing a way to use it as non-Embedded DSL. . For a few examples types (function, boolean, integer) a so-called /symantic/ type class defines a /syntax/ whose instances are interpreters defining each one a new /semantic/ (computing a Haskell term, serializing, optimizing, …). . Combining the methods of those /symantic/ type classes form an EDSL in which one can write /symantic expressions/ at developing time, a next step is then to be able to write such /symantic expressions/ at runtime, while preserving their extensibility and interpretability. . In this direction, the main improvements are: . * Reading /symantic expressions/ from a raw AST (Abstract Syntax Tree); including /call-by-value/ and /call-by-need/ (lazy) lambda abstractions. . * Keeping this reading recombinable and extensible with new /symantic expressions/; reusing previous readers without alterating them. . * Keeping those read /symantic expressions/ usable with multiple interpreters. . Your comments, problem reports, questions are very welcome! extra-source-files: extra-tmp-files: -- homepage: http://pad.autogeree.net/informatique/lol/symantic/ license: GPL-3 license-file: COPYING maintainer: Julien Moutinho name: lol-symantic stability: experimental synopsis: Demo of Typed Tagless-Final Higher-Order Extensible DSL tested-with: GHC==7.10.3 version: 1.20160919 Source-Repository head location: git://git.autogeree.net/lol type: git Flag dev Default: False Description: Turn on development settings. Manual: True Flag dump Default: False Description: Dump some intermediate files. Manual: True Flag prof Default: False Description: Turn on profiling settings. Manual: True Flag threaded Default: False Description: Enable threads. Manual: True Library default-extensions: ghc-options: -Wall -fno-warn-tabs if flag(dev) cpp-options: -DDEVELOPMENT ghc-options: -- -ddump-splices -- -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -- -fno-warn-type-defaults -fno-warn-orphans if flag(dump) ghc-options: -ddump-simpl -ddump-stg -ddump-to-file if flag(prof) cpp-options: -DPROFILING ghc-options: -fprof-auto default-language: Haskell2010 exposed-modules: Language.LOL.Symantic.Lib.Control.Monad Language.LOL.Symantic.Expr Language.LOL.Symantic.Expr.Bool Language.LOL.Symantic.Expr.Common Language.LOL.Symantic.Expr.Lambda Language.LOL.Symantic.Expr.Int Language.LOL.Symantic.AST Language.LOL.Symantic.Repr Language.LOL.Symantic.Repr.Dup Language.LOL.Symantic.Repr.Host Language.LOL.Symantic.Repr.String Language.LOL.Symantic.Type Language.LOL.Symantic.Type.Bool Language.LOL.Symantic.Type.Common Language.LOL.Symantic.Type.Fun Language.LOL.Symantic.Type.Int Language.LOL.Symantic.Trans Language.LOL.Symantic.Trans.Common Language.LOL.Symantic.Trans.Bool build-depends: base >= 4.6 && < 5 , ghc-prim , monad-classes >= 0.3.1.1 , peano , transformers , text Test-Suite lol-symantic-test type: exitcode-stdio-1.0 default-extensions: OverloadedStrings default-language: Haskell2010 ghc-options: -Wall -fno-warn-tabs -main-is Test hs-source-dirs: Language/LOL/Symantic main-is: Test.hs other-modules: Expr.Bool.Test Expr.Lambda.Test Expr.Test AST.Test Repr.Host.Test Repr.String.Test Repr.Test Type.Test if flag(threaded) ghc-options: -threaded -rtsopts -with-rtsopts=-N if flag(dev) cpp-options: -DDEVELOPMENT ghc-options: if flag(prof) cpp-options: -DPROFILING ghc-options: -fprof-auto build-depends: base >= 4.6 && < 5 , transformers , tasty >= 0.11 , tasty-hunit , lol-symantic