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.
I enjoy writing and in addition to my published books I offer free Open Content material on this web page. I both enjoy and appreciate feedback on ideas for material and reporting any errors. I offer free web books on Java and artificial intelligence programming, Common Lisp programming, and a new but still incomplete book The Software Design and Development Book. I am also working on a Ruby AI book and a short paper on AI design patterns. I also have a link to an old paper on AI, Go and Consciousness (updated 1/25/2004) available here. I have a short paper Jumpstarting the Semantic Web available here (new version 1/14/2005). I am also starting to include my fiction (short stories) here in addition to computer science web books.
R. Gabriel. Proceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, page 250--268. New York, NY, USA, ACM, (2016)