Page:AIM-353.djvu/36



  (LABELS (( ) ( <1ambda-exp2>) . . .        ( ))        )

A new environment is created in which the names  are bound to closures of the lambda expresisonsexpressions [sic]  ; the lambda expressions are closed in this new environment, and so may refer to each other. The  is then evaluated in this new environment.

The  construct of LISP 1.5:

 ((LABEL <1ambda-exp>) ... )

may be written as a  in SCHEME:

 (LABELS (( ))       (   ... ))  {Landinknewthis} In [Landin 65] Landin uses this same technique to model call-by-name. However, he modelled assignment to call-by-name parameters in a way much different from the one we use later: he uses L-values rather than an extra assignment thunk.  {Mccarthywins} This was realized as early as 1960 by John McCarthy. In section 6 of [McCarthy 60] he describes a technique for transforming a flowchart into a purely recursive procedure.  <section begin="Muddlevcells"/>{Muddlevcells} The MDL language (formerly known as MUDDLE) [Galley 75] uses cached value cells, but uses a process number rather than a side effect count to determine the validity of the cache data, the purpose being to share a cache among several processes. <section end="Muddlevcells"/> <section begin="Plasmafluids"/>{Plasmafluids} This indicates an obvious method for implementing fluid variables in PLASMA in a natural way. All that would be required is a slight change to the implicitly supplied continuations. <section end="Plasmafluids"/> <section begin="Schemenote"/>{Schemenote} This is discussed in detail in [Sussman 75], where an actual implementation is described. The theoretical justification is described there, and later in this paper also. <section end="Schemenote"/> <section begin="Schemepaper"/>{Schemepaper} SCHEME is fully described in [Sussman 75], which contains a complete reference manual as well as a fully documented implementation of the language in MacLISP [Moon 74].<section end="Schemepaper"/>