Contents
1. A Different View of LAMBDA | 1 |
1.1. Primitive Operations in Programming Languages | 1 |
1.2. Function Invocation: The Ultimate Imperative | 2 |
1.3. LAMBDA as a Renaming Operator | 7 |
1.4. An Example: Compiling a Simple Function | 8 |
1.5. Who Pops the Return Address? | 11 |
2. Lexical and Dynamic Binding | 12 |
3. LAMBDA, Actors, and Continuations | 16 |
3.1. Actors ≡ Closures (mod Syntax) | 16 |
3.2. The Procedural View of Data Types | 20 |
4. Some Proposed Organization for a Compiler | 25 |
4.1. Basic Issues | 25 |
4.2. Some Side Issues | 27 |
5. Conclusions | 29 |
Appendix A. Conversion to Continuation-Passing Style | 30 |
Appendix B. Continuation-Passing with Multiple Value Return | 36 |
Notes | 39 |
References | 42 |
Acknowledgements
Thanks are due to Gerald Sussman, Carl Hewitt, Allen Brown, Jon Doyle, Richard Stallman, and Richard Zippel for discussing the issues presented here and for proofreading various drafts of the document.
An earlier version of this document was submitted in April 1976 to the Department of Electrical Engineering and Computer Science at MIT in the form of a proposal for research towards a Master's Thesis.