Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Generative communication in Linda
ACM Transactions on Programming Languages and Systems (TOPLAS)
MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
The connection machine
CommonLoops: merging Lisp and object-oriented programming
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Common LISP: the language
Connection Machine Lisp: fine-grained parallel symbolic processing
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
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
Lucid, a nonprocedural language with iteration
Communications of the ACM
Distributed data structures in Linda
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Functional Programming
Queue-based multi-processing LISP
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
The implementation of procedurally reflective languages
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
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)
AN ABSTRACT IMPLEMENTATION FOR A GENERALIZED DATA FLOW LANGUAGE
AN ABSTRACT IMPLEMENTATION FOR A GENERALIZED DATA FLOW LANGUAGE
Parallelism, persistence and meta-cleanliness in the symmetric Lisp interpreter
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
A unified system of parameterization for programming languages
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Programming languages for distributed computing systems
ACM Computing Surveys (CSUR)
How to write parallel programs: a guide to the perplexed
ACM Computing Surveys (CSUR)
Metalevel building blocks for modular systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Sharing code through first-class environments
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A Polymorphic Environment Calculus and its Type-Inference Algorithm
Higher-Order and Symbolic Computation
Language constructs for context-oriented programming: an overview of ContextL
DLS '05 Proceedings of the 2005 symposium on Dynamic languages
Self-Sustaining Systems
NetWorkSpace: a coordination system for high-productivity environments
International Journal of Parallel Programming
IJCAI'87 Proceedings of the 10th international joint conference on Artificial intelligence - Volume 1
Efficient layer activation for switching context-dependent behavior
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
First-class substitutions in contextual type theory
Proceedings of the Eighth ACM SIGPLAN international workshop on Logical frameworks & meta-languages: theory & practice
Hi-index | 0.00 |
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.