Proving Theorems about LISP Functions
Journal of the ACM (JACM)
The denotational semantics of programming languages
Communications of the ACM
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
The Denotational Description of Programming Languages: An Introduction
The Denotational Description of Programming Languages: An Introduction
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Flow analysis and optimization of LISP-like structures
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
AMORD explicit control of reasoning
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
ACM SIGPLAN Notices - Special issue: History of programming languages conference
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
An Interpreter for Extended Lambda Calculus
An Interpreter for Extended Lambda Calculus
Lambda: The Ultimate Imperative
Lambda: The Ultimate Imperative
The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two)
The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two)
Rabbit: A Compiler for Scheme
Operational reasoning and denotational semantics.
Operational reasoning and denotational semantics.
Revised report on the algorithmic language scheme
ACM SIGPLAN Notices
Intensions and extensions in a reflective tower
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Welding advisory system for process selection “WASPS”
IEA/AIE '89 Proceedings of the 2nd international conference on Industrial and engineering applications of artificial intelligence and expert systems - Volume 1
M-LISP: its natural semantics and equational logic
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
M-LISP: a representation-independent dialect of LISP with reduction semantics
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Theory of Fexprs is Trivial
Lisp and Symbolic Computation
Desiderata for the standardization of LISP
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Induction, Domains, Calculi: Strachey's Contributions to Programming-Language Engineering
Higher-Order and Symbolic Computation
The implementation of procedurally reflective languages
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
The scheme 311 compiler an exercise in denotational semantics
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Experience with an experimental compiler generator based on denotational semantics
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
An operational semantics for Scheme
ACM SIGPLAN Lisp Pointers
ACM SIGPLAN Lisp Pointers
Hi-index | 0.00 |
We review the features of some of the major dialects of LISP, show how they are reflected in denotational treatments of their semantics and draw a series of conclusions concerning semantic design of languages, program proving and optimization. We concentrate our attention on four dialects: (1) LISP 1.0 - approximating McCarthy's original design, (2) Modern LISP - approximating the major features of most current systems, (3) Funarg LISP - Modern LISP with upward and downward functional arguments, and (4) SCHEME - Steele and Sussman's lexically scoped dialect. LISP 1.0 and SCHEME are semantically tractable. In both cases it is possible to write a denotational semantics which exactly specifies the types of semantic objects being manipulated and the meaning of each valid syntactic construct. For modern LISP and Funarg LISP, on the other hand, we show that it is not possible to give a semantics which fully specifies the language and satisfies all the tenets of denotational semantics. However, we give a definition which rests on the foundational underpinnings of denotational semantics, thus guaranteeing that our semantic objects exist, and violates only the structural definition principle: that the meaning of a construct be defined in terms of the meanings of its parts. This has far-reaching significance for program proving, optimization and comprehensibility of programs.