Compilation of functional languages using flow graph analysis

A system based on the notion of a flow graph is used to specify formally and to implement a compiler for a lazy functional language. The compiler takes a simple functional language as input and generates C. The generated C program can then be compiled, and loaded with an extensive run‐time system to provide the facility to experiment with different analysis techniques. The compiler provides a single, unified, efficient, formal framework for all the analysis and synthesis phases, including the generation of C. Many of the standard techniques, such as strictness and boxing analyses, have been included.

[1]  Simon L. Peyton Jones,et al.  Strictness Analysis - A Practical Approach , 1985, FPCA.

[2]  Geoffrey L. Burn,et al.  Evaluation transformers - a model for the parallel evaluation of functional languages (extended abstract) , 1987, FPCA.

[3]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..

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

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

[6]  Antoni Diller Compiling functional languages , 1988 .

[7]  Geoffrey L. Burn,et al.  Assessing the evaluation transformer model of reduction on the spineless G-machine , 1993, FPCA '93.

[8]  Thomas Johnsson Efficient compilation of lazy evaluation , 1984, SIGP.

[9]  Geoffrey L. Burn Using Projection Analysis in Compiling Lazy Functional Programs , 1990 .

[10]  Reinhard Wilhelm,et al.  Tree Tranformations, Functional Languages, and Attribute Grammars , 1990, WAGA.

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

[12]  Eric Nöcker,et al.  Strictness analysis using abstract reduction , 1993, FPCA '93.

[13]  Jon Fairbairn,et al.  TIM: A simple, lazy abstract machine to execute supercombinatorics , 1987, FPCA.

[14]  Chris Hankin,et al.  Abstract Interpretation of Declarative Languages , 1987 .

[15]  Pieter H. Hartel,et al.  A pragmatic approach to the analysis and compilation of lazy functional languages , 1991 .

[16]  Pieter H. Hartel,et al.  Benchmarking implementations of lazy functional languages , 1993, FPCA '93.

[17]  Phil Wadfer,et al.  Strictness analysis on non-fiat domains (by abstract interpretation over finite domains) , 1985 .

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

[19]  Daniel Le Métayer,et al.  A new method for strictness analysis on non-flat domains , 1989, Fourth IEEE Region 10 International Conference TENCON.

[20]  Jacques Cohen,et al.  Garbage Collection of Linked Data Structures , 1981, CSUR.

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

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

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

[24]  Alan Mycroft,et al.  Abstract interpretation and optimising transformations for applicative programs , 1982 .

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

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

[27]  Harry Feldmann An acceptive grammar for the natural language English , 1984, SIGP.

[28]  Thomas Johnsson,et al.  The Chalmers Lazy-ML Compiler , 1989, Computer/law journal.

[29]  Pieter H. Hartel,et al.  FAST compiler user's guide , 1993 .

[30]  Geoffrey L. Burn,et al.  Implementing the evaluation transformer model of reduction on parallel machines , 1991, Journal of Functional Programming.

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

[32]  Hugh Glaser,et al.  On the benefits of different analyses in the compilation of functional languages , 1991 .

[33]  Thomas Johnsson,et al.  Attribute grammars as a functional programming paradigm , 1987, FPCA.

[34]  Marko C. J. D. van Eekelen,et al.  Concurrent Clean , 1991, PARLE.

[35]  Philip Wadler,et al.  Projections for strictness analysis , 1987, FPCA.

[36]  Simon L. Peyton Jones,et al.  Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine , 1992, Journal of Functional Programming.

[37]  John Hughes,et al.  Compile-time analysis of functional programs , 1990 .