Nada Amin - Metacircular Interpretation ad infinitum
I have only just heard about this idea which goes back to the early eighties.
See Reflection and semantics in LISP (1984) by Brian Cantwell Smith, Reification: Reflection without metaphysics (1984) by Daniel Friedman and Mitchell Wand, Intensions and extensions in a reflective tower (1988) by Olivier Danvy and Karoline Malmkjaer, The reflective language Black (1996-2025) and Compiling a reflective language using MetaOCaml (2014) by Kenichi Asai. Also this summary Reflective Towers of Interpreters (2021) by Nada Amin. For more on Extended CPS see Abstracting control (1990) by Olivier Danvy and Andrzej Filinski.
See also Open, extensible object models (2006) by Ian Piumarta and Alessandro Warth:
Programming languages often hide their implementation at a level of abstraction that is inaccessible to programmers. Decisions and tradeoffs made by the language designer at this level (single vs. multiple inheritance, mixins vs. Traits, dynamic dispatch vs. static case analysis, etc.) cannot be repaired easily by the programmer when they prove inconvenient or inadequate. The artificial distinction between implementation language and end-user language can be eliminated by implementing the language using only end-user objects and messages, making the implementation accessible for arbitrary modification by programmers. We show that three object types and five methods are sufficient to bootstrap an extensible object model and messaging semantics that are described entirely in terms of those same objects and messages. Raising the implementation to the programmers’ level lets them design and control their own implementation mechanisms in which to express concise solutions and frees the original language designer from ever having to say “I’m sorry”.
Nada Amin ran a course on Metaprogramming at Cambridge in 2018/19: https://www.cl.cam.ac.uk/teaching/1819/Metaprog/.
See also David MacQueen on his Ideas for Successor ML and There is No Category of Categories.
Subscribe to Strange Loop.
Comments
Post a Comment