Folding domain-specific languages

A domain-specific language can be implemented by embedding within a general-purpose host language. This embedding may be deep or shallow, depending on whether terms in the language construct syntactic or semantic representations. The deep and shallow styles are closely related, and intimately connected to folds; in this paper, we explore that connection.

[1]  Matthias Felleisen,et al.  Synthesizing Object-Oriented and Functional Design to Promote Re-Use , 1998, ECOOP.

[2]  John C. Reynolds User-defined types and procedural data structures as complementary approaches to data abstraction , 1994 .

[3]  Amr Sabry,et al.  Extensible effects: an alternative to monad transformers , 2013, Haskell '13.

[4]  Ralf Lämmel,et al.  Dealing with large bananas , 2000 .

[5]  Jacques Carette,et al.  Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages , 2007, Journal of Functional Programming.

[6]  Wouter Swierstra,et al.  Data types à la carte , 2008, Journal of Functional Programming.

[7]  Martin Fowler,et al.  Domain-Specific Languages , 2010, The Addison-Wesley signature series.

[8]  Jeremy Gibbons,et al.  The under-appreciated unfold , 1998, ICFP '98.

[9]  Maarten M. Fokkinga Tupling and Mutumorphisms , 1989 .

[10]  Oleg Kiselyov,et al.  Typed Tagless Final Interpreters , 2010, SSGIP.

[11]  Corrado Böhm,et al.  Automatic Synthesis of Typed Lambda-Programs on Term Algebras , 1985, Theor. Comput. Sci..

[12]  Masato Takeichi,et al.  Formal derivation of efficient parallel programs by construction of list homomorphisms , 1997, TOPL.

[13]  Ralf Hinze,et al.  Unifying structured recursion schemes , 2013, ICFP.

[14]  Ralf Hinze Church numerals, twice! , 2005, J. Funct. Program..

[15]  Richard S. Bird The promotion and accumulation strategies in transformational programming , 1984, TOPL.

[16]  Ralf Hinze,et al.  Adjoint folds and unfolds - An extended study , 2013, Sci. Comput. Program..

[17]  Richard J. Boulton,et al.  Experience with Embedding Hardware Description Languages in HOL , 1992, TPCD.

[18]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

[19]  Anne Kaldewaij,et al.  Programming - the derivation of algorithms , 1990, Prentice Hall international series in computer science.

[20]  William C. Frederick,et al.  A Combinatory Logic , 1995 .

[21]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.

[22]  Paul Hudak,et al.  Building domain-specific embedded languages , 1996, CSUR.

[23]  Ralf Hinze An Algebra of Scans , 2004, MPC.

[24]  Apostolos Syropoulos,et al.  Steps in Scala: The expression problem , 2010 .

[25]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[26]  Robert Atkey,et al.  Unembedding domain-specific languages , 2009, Haskell.

[27]  Jeremy Gibbons,et al.  Functional Programming for Domain-Specific Languages , 2013, CEFP.

[28]  H. T. Kung,et al.  The chip complexity of binary arithmetic , 1980, STOC '80.

[29]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.