|
ABSTRACT
We describe a programming language called Symmetric Lisp that treats environments as first-class objects. Symmetric Lisp allows programmers to write expressions that evaluate to environments, and to create and denote variables and constants of type environment as well. One consequence is that the roles filled in other languages by a variety of limited, special purpose environment forms like records, structures, closures, modules, classes and abstract data types are filled instead by a single versatile and powerful structure. In addition to being its fundamental structuring tool, environments also serve as the basic functional object in the language. Because the elements of an environment are evaluated in parallel, Symmetric Lisp is a parallel programming language; because they may be assembled dynamically as well as statically, Symmetric Lisp accommodates an unusually flexible and simple (parallel) interpreter as well as other history-sensitive applications requiring dynamic environments. We show that first-class environments bring about fundamental changes in a language's structure: conventional distinctions between declarations and expressions, data structures and program structures, passive modules and active processes disappear.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Reference Manual for the ADA Programming Language. United States Dept. of Defense, 1982.
|
 |
2
|
|
| |
3
|
M. Atkinson and R. Morrison. Types, Bindings, and Parameters in a Persistent Environment. in Persistence and Data Types Papers for the Appin Workshop, University of St. Andrews, August 1985.
|
 |
4
|
Daniel G. Bobrow , Kenneth Kahn , Gregor Kiczales , Larry Masinter , Mark Stefik , Frank Zdybel, CommonLoops: merging Lisp and object-oriented programming, Conference proceedings on Object-oriented programming systems, languages and applications, p.17-29, September 29-October 02, 1986, Portland, Oregon, United States
|
 |
5
|
|
| |
6
|
William Clinger and et. al. The Revised Revised Revised Report on Scheme or An UnCommon Lisp. Technical Report AI-TM 848, MIT Artifical Intelligence Laboratory, 1985.
|
 |
7
|
|
 |
8
|
|
| |
9
|
David Gelernter. Symmetric Programming Languages. Technical Report TR 353, Yale University Dept. of Computer Science, December 1984.
|
| |
10
|
David Gelernter. Symmetry and the Non- Evolution of Programming Languages. Technical Report TR 486, Yale University Dept. of Computer Science, June 1986.
|
| |
11
|
David Gelernter, Nick Carriero, Sarat Chandran, and Silvia Chang. Parallel programming in Linda. In Int. Conf. Parallel Processing, August 1985.
|
| |
12
|
David Gelernter, Suresh Jagannathan, and Thomas London. Parallelism, Persistence and Meta-Cleanliness in the Symmetric Lisp Interpreter. Technical Report, Yale University Dept. of Computer Science, 1986.
|
| |
13
|
|
| |
14
|
R. Greenblat, T. Knight, $. Holoway, D. Moon, and D. Weirtreb. The LISP Machine. In Interactive Programming Environments, pages 326- 352, McGraw-Hill.
|
 |
15
|
|
| |
16
|
|
| |
17
|
|
| |
18
|
Robert Keller, Gary Lindstrom, and Suhas Patil. A Loosely-Coupled Applicative Multi- Processing System. in A FIPS Conference Proceedings, pages 613-622, June 1979.
|
 |
19
|
|
| |
20
|
|
| |
21
|
|
 |
22
|
|
| |
23
|
|
| |
24
|
D. A. Turner. A New Implementation Technique for Applicative Languages. Software - Practice and Experience, (9):31-49, 1979.
|
 |
25
|
|
| |
26
|
|
| |
27
|
Niklaus Wirth. The Design and Implementation of Modula. Software Practice and Experience, 1980.
|
|