Finally Tagless, Partially Evaluated

We have built the first family of tagless interpretations for a higher-order typed object language in a typed metalanguage (Haskell or ML) that require no dependent types, generalized algebraic data types, or postprocessing to eliminate tags. The statically type-preserving interpretations include an evaluator, a compiler (or staged evaluator), a partial evaluator, and call-by-name and call-by-value CPS transformers.

[1]  Peter Thiemann Cogen in six lines , 1996, ICFP '96.

[2]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[3]  Olivier Danvy,et al.  Tagging, Encoding, and Jones Optimality , 2003, ESOP.

[4]  Olivier Danvy,et al.  Type-directed partial evaluation , 1995, POPL '96.

[5]  Frank Pfenning,et al.  Staged computation with names and necessity , 2005, J. Funct. Program..

[6]  Naoki Kobayashi,et al.  A Hybrid Approach to Online and Offline Partial Evaluation , 2001, High. Order Symb. Comput..

[7]  Walid Taha,et al.  Tag Elimination and Jones-Optimality , 2001, PADO.

[8]  Gang Chen,et al.  Guarded recursive datatype constructors , 2003, POPL '03.

[9]  Stephanie Weirich,et al.  Boxes go bananas: encoding higher-order abstract syntax with parametric polymorphism , 2003, ICFP '03.

[10]  S. Doaitse Swierstra,et al.  Typing dynamic typing , 2002, ICFP '02.

[11]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[12]  Peter Lee,et al.  Metacircularity in the Polymorphic lambda-Calculus , 1991, Theor. Comput. Sci..

[13]  Walid Taha,et al.  Environment classifiers , 2003, POPL '03.

[14]  Frank Pfenning,et al.  Higher-order abstract syntax , 1988, PLDI '88.

[15]  Walid Taha,et al.  Concoqtion: indexed types now! , 2007, PEPM '07.

[16]  Bruno C. d. S. Oliveira,et al.  TypeCase: a design pattern for type-indexed functions , 2005, Haskell '05.

[17]  Simon L. Peyton Jones,et al.  Simple unification-based type inference for GADTs , 2006, ICFP '06.

[18]  Nick Benton,et al.  Under Consideration for Publication in J. Functional Programming Embedded Interpreters , 2022 .

[19]  Peter Thiemann,et al.  Two for the price of one: composing partial evaluation and compilation , 1997, PLDI '97.

[20]  Zhe Yang,et al.  Encoding types in ML-like languages , 1998, ICFP '98.

[21]  Marcelo P. Fiore,et al.  Semantic analysis of normalisation by evaluation for typed lambda calculus , 2002, PPDP '02.

[22]  Kenichi Asai Binding-time analysis for both static and dynamic expressions , 2009, New Generation Computing.

[23]  Walid Taha,et al.  Tagless staged interpreters for typed languages , 2002, ICFP '02.

[24]  Zhong Shao Typed cross-module compilation , 1998, ICFP '98.

[25]  Furio Honsell,et al.  Coinductive characterizations of applicative structures , 1999, Math. Struct. Comput. Sci..

[26]  Ralf Hinze,et al.  Type-indexed data types , 2004, Sci. Comput. Program..

[27]  Walid Taha,et al.  ML-Like Inference for Classifiers , 2004, ESOP.

[28]  Robert Glück Jones optimality, binding-time improvements, and the strength of program specializers , 2002, ASIA-PEPM '02.

[29]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

[30]  Robert Harper,et al.  Compiling polymorphism using intensional type analysis , 1995, POPL '95.

[31]  Roberto Di Cosmo,et al.  Extensional normalisation and type-directed partial evaluation for typed lambda calculus with sums , 2004, POPL.

[32]  Norman Ramsey ML Module Mania: A Type-Safe, Separately Compiled, Extensible Interpreter , 2006, Electron. Notes Theor. Comput. Sci..

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

[34]  Gopalan Nadathur,et al.  A Logic Programming Approach to Manipulating Formulas and Programs , 1987, SLP.