A critique of Abelson and Sussman or why calculating is better than scheming
ACM SIGPLAN Notices
4th Annual Symposium on Theoretical Aspects of Computer Sciences on STACS 87
Macro-by-example: Deriving syntactic transformations from their specifications
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Intensions and extensions in a reflective tower
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Reification without evaluation
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Unique normal forms for Lambda calculus with surjective pairing
Information and Computation
The theory and practice of first-class prompts
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A sound and complete axiomatization of operational equivalence of programs with memory
Proceedings of the Fourth Annual Symposium on Logic in computer science
The mystery of the tower revealed: a non-reflective description of the reflective tower
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Tree-Manipulating Systems and Church-Rosser Theorems
Journal of the ACM (JACM)
Proving Theorems about LISP Functions
Journal of the ACM (JACM)
Communications of the ACM
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
Anatomy of LISP
Reflection and semantics in LISP
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The implementation of procedurally reflective languages
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Reification: Reflection without metaphysics
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
A semantic comparison of LISP and SCHEME
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Operational reasoning and denotational semantics.
Operational reasoning and denotational semantics.
LISP 1.5 Programmer's Manual
The Theory of Fexprs is Trivial
Lisp and Symbolic Computation
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
A Generic Reification Technique for Object-Oriented Reflective Languages
Higher-Order and Symbolic Computation
Structured Operational Semantics of a fragment of the language Scheme
Journal of Functional Programming
An operational semantics for scheme1
Journal of Functional Programming
Inter-language reflection: A conceptual model and its implementation
Computer Languages, Systems and Structures
Diagrams for meaning preservation
RTA'03 Proceedings of the 14th international conference on Rewriting techniques and applications
Reasoning about multi-stage programs
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Hi-index | 0.00 |
In this paper we introduce M-LISP, a dialect of LISP designed with an eye toward reconciling LISP's metalinguistic power with the structural style of operational semantics advocated by Plotkin [28]. We begin by reviewing the original definition of LISP [20] in an attempt to clarify the source of its metalinguistic power. We find that it arises from a problematic clause in this definition. We then define the abstract syntax and operational semantics of M-LISP, essentially a hybrid of M-expression LISP and Scheme. Next, we tie the operational semantics to the corresponding equational logic. As usual, provable equality in the logic implies operational equality. Having established this framework we then extend M-LISP with the metalinguistic eval and reify operators (the latter is a nonstrict operator that converts its argument to its metalanguage representation). These operators encapsulate the matalinguistic representation conversions that occur globally in S-expression LISP. We show that the naive versions of these operators render LISP's equational logic inconsistent. On the positive side, we show that a naturally restricted form of the eval operator is confluent and therefore a conservative extension of M-LISP. Unfortunately, we must weaken the logic considerably to obtain a consistent theory of reification.