Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!cs.utexas.edu!uunet!yale!jagannathan-suresh From: jagannathan-suresh@CS.YALE.EDU (Suresh Jagannathan) Newsgroups: comp.lang.scheme Subject: Re: WANTED: information on first class environments Message-ID: <67151@yale-celray.yale.UUCP> Date: 21 Jul 89 17:01:30 GMT References: Sender: root@yale.UUCP Reply-To: jagannathan-suresh@CS.YALE.EDU (Suresh Jagannathan) Distribution: comp Organization: Yale University Computer Science Dept, New Haven CT 06520-2158 Lines: 45 In article ham@Polya.Stanford.EDU (Peter R. Ham) writes: >I'm interested in first class environments in programming languages >like Scheme. Symmetric Lisp is a programming language whose fundamental program and data structure is a first-class parallel environment. In the symmetric programming model, the representation of programs is identical to the representation of data structures. To specify a computation, the programmer specifies a data structure. The specified data structure can be examined, parameterized, composed with other structures, and projected yet it has the semantics of a naming environment -- it defines a scope and the bindings within it implicitly affect the evaluation of expressions as the program executes. A program in this model is an environment containing reducible expressions; the object returned as the result of evaluating a program is the same environment with each reducible expression replaced by its value. Parallelism is an important part of this model. Whenever two elements of a Symmetric Lisp program occur as separate elements of the same structure, they may evaluate simultaneously (subject only to basic data dependencies). A first-class environment is a non-strict object: a program's components may be examined (since a program is a data structure) even as its other elements continue to evaluate. Non-strictness and first-class environments combine to form an interesting symbiosis; much of the Symmetric Lisp effort has focussed on investigating their interaction. ----- You may be interested in the following references for more information: [1] A Symmetric Language. Yale University TR, DCS-RR/568, May 1989. (I'll be glad to send you a copy if you're interested.) [2] A Programming Language Supporting First-Class Parallel Environments. MIT Laboratory for Computer Science TR-434. December, 1988. (A slightly revised version of my Ph.D thesis of the same title.) [3] Environments as First-Class Object. 14th ACM Symposium on Principles of Programming Languages, Jan. 1987. [4] Parallelism, Persistence and Meta-Cleanliness in the Symmetric Lisp Interpreter. SIGPLAN '87 Conf. on Interpreters and Interpretative Techniques. 1987.