typed self-representation
Self-representation -- the ability to represent programs in their own language -- has important applications in reflective languages and many other domains of programming language design. Although approaches to designing typed program representations for sublanguages of some base language have become quite popular recently, the question whether a fully metacircular typed self-representation is possible is still open. This paper makes a big step towards this aim by defining the F ? * calculus, an extension of the higher-order polymorphic lambda calculus F ? that allows typed self-representations. While the usability of these representations for metaprogramming is still limited, we believe that our approach makes a significant step towards a new generation of reflective languages that are both safe and efficient.
types representation program language applications reflection domain programming language language design design paper extensibility polymorphic lambda calculus usability metaprogram generation efficiency order self interpretation