A pragmatic approach to the analysis and compilation of lazy functional languages

The aim of the FAST Project is to provide an implementation of a functional language, Haskell, on a transputer array. An important component of the system is a highly optimising compiler for Haskell to a single transputer. This paper presents a methodology for describing the optimisations and code generation for such a compiler, which allows the exploitation of many standard and some new techniques in a clear and concise notation. Results are included showing that the optimisations give significant improvement over the standard combinator and (Johnsson's 1984) G-machine implementations.

[1]  Paul H. J. Kelly Functional programming for loosely-coupled multiprocessors , 1989, Research monographs in parallel and distributed computing.

[2]  Pieter W. M. Koopman Interactive programs in a functional language: A functional implementation of an editor , 1987, Softw. Pract. Exp..

[3]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[4]  Pieter H. Hartel A Comparison of Three Garbage Collection Algorithms , 1990, Struct. Program..

[5]  Pieter H. Hartel,et al.  Statistics on graph reduction of SASL programs , 1988, Softw. Pract. Exp..

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

[7]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

[8]  Pieter H. Hartel Performance of lazy combinator graph reduction , 1991, Softw. Pract. Exp..

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

[10]  Daniel Le Métayer,et al.  A new computational model and its discipline of programming , 1986 .

[11]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[12]  Simon L. Peyton Jones,et al.  The spineless G-machine , 1988, LISP and Functional Programming.

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