Type-Directed Partial Evaluation
Partial Evaluation - Practice and Theory, DIKU 1998 International Summer School
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
A Language Prototyping Tool Based on Semantic Building Blocks
Computer Aided Systems Theory - EUROCAST 2001-Revised Papers
TinkerType: a language for playing with formal systems
Journal of Functional Programming
A monadic approach for avoiding code duplication when staging memoized functions
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Dynamically adaptable software with metacomputations in a staged language
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
Reasoning about i/o in functional programs
CEFP'11 Proceedings of the 4th Summer School conference on Central European Functional Programming School
Hi-index | 0.01 |
The monadic style of language specification has the advantages of modularity and extensibility: it is simple to add or change features in an interpreter to reflect modifications in the source language. It has proven difficult to extend the method to compilation. We demonstrate that by introducing machine-like stores (code and data) into the monadic semantics and then partially evaluating the resulting semantic expressions, we can achieve many of the same advantages for a compiler as for an interpreter. A number of language constructs and features are compiled: expressions, CBV and CBN evaluation of lambda-expressions, dynamic scoping, and various imperative features. The treatment of recursive procedures is outlined as well. The resulting method allows compilers to be constructed in a mix-and-match fashion just as in a monad-structured interpreter.