In most other programming languages, new abstractions are built by writing code on /top/ of existing abstractions. But in lisp, its possible to build new abstractions by writing code *beneath* existing code. Abstract: A partial evaluator automatically specializes a program with respect to some of its input. This article shows how the idea comes up naturally when you write program generators by hand, then builds a basic online partial evaluation library and puts it to work transforming an interpreter into a compiler. 0. Introduction Mainstream programmers think of writing an interpreter or a compiler as a major job, worth doing only for a major problem. They know this because the languages they use every day have big, serious implementations, and the compiler class they took in school had them write just one big, semi-serious compiler. Lispers know better: all the textbooks show how to write a Lisp interpreter in about a page of code.
S. Marr, and S. Ducasse. Proceedings of the 2015 ACM International Conference on Object Oriented Programming Systems Languages & Applications, page 821--839. ACM, (October 2015)(acceptance rate 25%).
V. Srinivasan, and T. Reps. Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, page 860--879. New York, NY, USA, ACM, (2015)
A. Shali, and W. Cook. Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, page 375--390. ACM, (2011)
C. Bolz, M. Leuschel, and D. Schneider. Proceedings of the 12th International ACM SIGPLAN Symposium on Principles and Practice of Declarative Programming, page 99--108. ACM, (2010)
A. Rigo, and S. Pedroni. OOPSLA'06: Companion to the 21st ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, page 944--953. ACM, (2006)
H. Masuhara, and A. Yonezawa. International Colloquium on Partial Evaluation and Program Transformation (PE Day'99), page 83--102. Waseda University, Tokyo, Japan, (November 1999)
M. Braux, and J. Noyé. Proceedings of the 2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, page 2--11. ACM, (1999)
L. Augustsson. Proceedings of the 1997 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation, page 127--136. ACM, (1997)
H. Masuhara, S. Matsuoka, K. Asai, and A. Yonezawa. Proceedings of the Tenth Annual Conference on Object-oriented Programming Systems, Languages, and Applications, page 300--315. New York, NY, USA, ACM, (1995)