Introduction to combinators and &lgr;-calculus
Introduction to combinators and &lgr;-calculus
Structure and interpretation of computer programs
Structure and interpretation of computer programs
Polymorphic type inference and containment
Information and Computation - Semantics of Data Types
Proofs and types
Meta-circular interpreter for a strongly typed language
Journal of Symbolic Computation
Metacircularity in the polymorphic &lgr;-calculus
TAPSOFT '89 2nd international joint conference on Theory and practice of software development
Handbook of logic in computer science (vol. 2)
From system F to typed assembly language
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The self-reduction in lambda calculus
Theoretical Computer Science - Selected papers in honor of Manuel Blum
Linear-Time Self-Interpretation of the Pure Lambda Calculus
Higher-Order and Symbolic Computation
Tag Elimination and Jones-Optimality
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
A Self-Interpreter of Lambda Calculus Having a Normal Form
CSL '92 Selected Papers from the Workshop on Computer Science Logic
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simple, partial type-inference for System F based on type-containment
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
PyPy's approach to virtual machine construction
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
A reversible programming language and its invertible self-interpreter
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Journal of Functional Programming
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Pattern Calculus: Computing with Functions and Structures
Pattern Calculus: Computing with Functions and Structures
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
Tagging, encoding, and jones optimality
ESOP'03 Proceedings of the 12th European conference on Programming
Towards typing for small-step direct reflection
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Multi-polymorphic programming in bondi
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
Self-interpreters can be roughly divided into two sorts: self-recognisers that recover the input program from a canonical representation, and self-enactors that execute the input program. Major progress for statically-typed languages was achieved in 2009 by Rendel, Ostermann, and Hofer who presented the first typed self-recogniser that allows representations of different terms to have different types. A key feature of their type system is a type:type rule that renders the kind system of their language inconsistent. In this paper we present the first statically-typed language that not only allows representations of different terms to have different types, and supports a self-recogniser, but also supports a self-enactor. Our language is a factorisation calculus in the style of Jay and Given-Wilson, a combinatory calculus with a factorisation operator that is powerful enough to support the pattern-matching functions necessary for a self-interpreter. This allows us to avoid a type:type rule. Indeed, the types of System F are sufficient. We have implemented our approach and our experiments support the theory.