A combinator-based compiler for a functional language

1. Introduction Functional languages are known primarily for their elegance, clarity, and expressive power. Unfortunately, this same elegance and power has been a bottleneck to building efficient implementations for such languages, especially those with fully "lazy" evaluation semantics. David Turner in his seminal paper [19] showed how the language SASL, a functional language with lazy evaluation , could be implemented simply and elegantly using

[1]  M. Schönfinkel Über die Bausteine der mathematischen Logik , 1924 .

[2]  A. C. Norman,et al.  SKIM - The S, K, I reduction machine , 1980, LISP Conference.

[3]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

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

[5]  Douglas W. Clark,et al.  An empirical study of list structure in Lisp , 1977, CACM.

[6]  R. J. M. Hughes,et al.  Super-combinators a new implementation method for applicative languages , 1982, LFP '82.

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

[8]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

[9]  D. A. Turner Another Algorithm for Bracket Abstraction , 1979, J. Symb. Log..

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

[11]  Alfred V. Aho,et al.  Principles of Compiler Design (Addison-Wesley series in computer science and information processing) , 1977 .

[12]  Daniel G. Bobrow,et al.  A model and stack implementation of multiple environments , 1973, CACM.

[13]  Peter Henderson,et al.  Functional programming - application and implementation , 1980, Prentice Hall International Series in Computer Science.

[14]  Neil D. Jones,et al.  A fixed-program machine for combinator expression evaluation , 1982, LFP '82.

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

[16]  Guy L. Steele Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMBDA: The Ultimate GOTO , 1977, ACM '77.