Closure Generation Based on Viewing Lambda as Epsilon Plus Compile

This paper describes a way of expressing @l-expressions (which produce closures) in terms of @e-expressions (@l-expressions containing only local and global variable references) and calls to an interactive compiler that compiles @e-expressions. This point of view is an interesting way of describing the semantics of @l-expressions and closure generation. It also leads to an efficient closure implementation both in time and space. A closure is uniformly represented as a piece of code instead of a compound object containing a code and environment pointer. This method can also be used to simulate closures in conventional dialects of Lisp

[1]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[2]  Jr. Guy L. Steele,et al.  Rabbit: A Compiler for Scheme , 1978 .

[3]  A. Church The calculi of lambda-conversion , 1941 .

[4]  Luca Cardelli The Functional Abstract Machine , 1983 .

[5]  Luca Cardelli,et al.  Compiling a functional language , 1984, LFP '84.

[6]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[7]  D. H. Bartley,et al.  Revised4 report on the algorithmic language scheme , 1991, LIPO.

[8]  Drew McDermott,et al.  An efficient environment allocation scheme in an interpreter for a lexically-scoped LISP , 1980, LISP Conference.

[9]  Rosen Saul,et al.  Programming systems and languages , 1966 .

[10]  Marc Feeley,et al.  Using Closures for Code Generation , 1987, Comput. Lang..

[11]  E. Dijkstra,et al.  Recursive Programming , 1960 .

[12]  Marc Feeley,et al.  A parallel virtual machine for efficient scheme compilation , 1990, LISP and Functional Programming.

[13]  Martin L. Griss,et al.  A portable lisp compiler , 1981, Softw. Pract. Exp..

[14]  Mitchell Wand,et al.  Continuation-Based Multiprocessing , 1980, High. Order Symb. Comput..

[15]  Brian Randall,et al.  ALGOL 60 implementation , 1964 .

[16]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[17]  Guy L. Steele,et al.  LAMBDA: The Ultimate Declarative , 1976 .

[18]  Ronald Morrison,et al.  Procedures as persistent data objects , 1985, TOPL.

[19]  奥乃博 1984 ACM Symposium on LISP and Functional Programming報告 , 1984 .

[20]  Rodney A. Brooks,et al.  An optimizing compiler for lexically scoped LISP , 1982, SIGPLAN '82.

[21]  Jonathan Rees,et al.  T: a dialect of Lisp or LAMBDA: The ultimate software tool , 1982, LFP '82.