
I'm trying to implement a set of languages with a large overlap between them.
From what I understand, there are 3 main ways to do this: Finally Tagless, Data Types a la Carte, or manually.
I'm currently leaning toward DTalaC, but not strongly. There seem to be two packages which implement the DTalaC style: syntactic and compdata. Alternatively, I can write the common code myself. Does anyone have recommendations for which one to use, and any materials for learning to use them? -- Alex R

2012-04-19 22:31, Alex Rozenshteyn skrev:
I'm trying to implement a set of languages with a large overlap between them.
From what I understand, there are 3 main ways to do this: Finally Tagless, Data Types a la Carte, or manually.
I'm currently leaning toward DTalaC, but not strongly.
There seem to be two packages which implement the DTalaC style: syntactic and compdata. Alternatively, I can write the common code myself.
Does anyone have recommendations for which one to use, and any materials for learning to use them?
I can only give useful comments on Syntactic. The core part has been described in my draft ICFP submission: http://www.cse.chalmers.se/~emax/documents/astModel-icfp2012-submitted.pdf For more advanced usage (of defining embedded languages), see NanoFeldspar, which is included in the Syntactic package. Syntactic doesn't really support mutually recursive data types, but they can be encoded using the technique described here: http://www.haskell.org/pipermail/haskell-cafe/2011-May/091770.html This seems to be similar to how CompData handles mutually recursive types. HTH / Emil
participants (2)
-
Alex Rozenshteyn
-
Emil Axelsson