Domain-specific Languages and Code Synthesis Using Haskell

There are many ways to give instructions to a computer: an electrical engineer might write a MATLAB program; a database administrator might write an SQL script; a hardware engineer might write in Verilog; and an accountant might write a spreadsheet with embedded formulas. Aside from the difference in language used in each of these examples, there is an important difference in form and idiom. Each uses a language customized to the job at hand, and each builds computational requests in a form both familiar and productive for programmers (although accountants may not think of themselves as programmers). In short, each of these examples uses a DSL (domain-specific language).

[1]  Brad L. Hutchings,et al.  JHDL-an HDL for reconfigurable systems , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).

[2]  Mary Sheeran,et al.  muFP, a language for VLSI design , 1984, LFP '84.

[3]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[4]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.

[5]  Oege de Moor,et al.  Compiling embedded languages , 2000, Journal of Functional Programming.

[6]  Andy Gill,et al.  Sunroof: A Monadic DSL for Generating JavaScript , 2014, PADL.

[7]  Graham Hutton,et al.  The Ruby Interpreter , 1993 .

[8]  J. Gregory Morrisett,et al.  Nikola: embedding compiled GPU functions in Haskell , 2010, Haskell '10.

[9]  Andy Gill,et al.  Type-safe observable sharing in Haskell , 2009, Haskell.

[10]  Tristan Bull,et al.  Types and Type Families for Hardware Simulation and Synthesis - The Internals and Externals of Kansas Lava , 2010, Trends in Functional Programming.

[11]  Andy Gill Declarative FPGA Circuit Synthesis using Kansas Lava , 2011 .

[12]  Bo Joel Svensson,et al.  Simple and compositional reification of monadic embedded languages , 2013, ICFP.

[13]  John Launchbury,et al.  Microprocessor specification in Hawk , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[14]  Simon L. Peyton Jones,et al.  Template meta-programming for Haskell , 2002, Haskell '02.

[15]  Emil Axelsson,et al.  Generic Monadic Constructs for Embedded Languages , 2011, IFL.

[16]  Mary Sheeran,et al.  The Design and Implementation of Feldspar - An Embedded Language for Digital Signal Processing , 2010, IFL.

[17]  T. Sheard Template Metaprogramming for Haskell , 2014 .

[18]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[19]  Koen Claessen,et al.  Observable Sharing for Functional Circuit Description , 1999, ASIAN.

[20]  Tristan Bull,et al.  Types and associated type families for hardware simulation and synthesis , 2012, High. Order Symb. Comput..

[21]  Andy Gill,et al.  The constrained-monad problem , 2013, ICFP.

[22]  John Launchbury,et al.  Recursive monadic bindings , 2000, ICFP '00.