## Compilation of Functional Languages Using Flow Graph Analysis (1994)

### Cached

### Download Links

- [www.cs.ubc.ca]
- [hpc.doc.ic.ac.uk]
- [ftp.wins.uva.nl]
- DBLP

### Other Repositories/Bibliography

Citations: | 18 - 13 self |

### BibTeX

@MISC{Hartel94compilationof,

author = {Pieter H. Hartel and Hugh Glaser and John M. Wild},

title = {Compilation of Functional Languages Using Flow Graph Analysis},

year = {1994}

}

### OpenURL

### Abstract

syntax, and syntactic and semantic domains of a flow graph Figure 9. Semantic equations Def and Exp of a flow graph The first argument to the functions Def and Exp specifies a set of nodes that represent a flow graph, from which the element(s) of current interest are selected by pattern matching.

### Citations

554 | The Implementation of Functional Programming Languages - Jones - 1987 |

491 |
Denotational semantics: The Scott-Strachey approach to programming language theory
- Stoy
- 1977
(Show Context)
Citation Context ...D; ffi 105 ; primitivesg The process continues for a while until we arrive at the fixed point expression. We found the process so tedious that we wrote a small functional program as suggested by Stoy =-=[14]-=- to do the rewriting. The resulting fixed point expression for append is: E g=fAPPEND; fix ( ffi 105 \Delta (ffi 104 \Delta (ffi 102 \Delta if (null ffi 104) then ffi 102 else cons (head ffi 104 ) ( f... |

297 | Why Functional Programming Matters - Hughes - 1989 |

201 | Implementing lazy functional languages on stock hardware: the spineless tagless g-machine - Jones - 1992 |

200 |
A new implementation technique for applicative languages’, Software-Practice
- Turner
(Show Context)
Citation Context ...s the best indication for the quality of our method is the number of cell claims made. Table 2 shows the cell claims (as reported in [4, 5]) witnessed by Turners standard combinator reduction machine =-=[15]-=-, a scalar version of Johnsson's (1984) G-machine [8] and the C code produced by the flow graph compiler. The numbers apply to evaluation only; the cell claims required to build the initial expression... |

152 | Miranda: a non-strict functional language with polymorphic types - Turner - 1985 |

127 | Efficient Compilation of Lazy Evaluation
- Johnsson
- 1984
(Show Context)
Citation Context ...t briefly mention some of the more interesting ones. Cheap eagerness causes expressions to be evaluated in a lazy context when it is definitely cheaper to do so than it would be to build a suspension =-=[8]-=-. The sets of edges that carry normal forms in some style determined by necessity analysis and cheap eagerness analysis are combined in pass 20. Passes 29--31 assist the compiler in flattening the flo... |

119 |
editors. Abstract Interpretation of Declarative Languages
- Abramsky, Henkin
- 1987
(Show Context)
Citation Context ...l way and to implement them efficiently. To show the compiler organisation, we give examples of forwards and backwards analysis [7]. In the literature many varieties of either kind have been proposed =-=[1]-=-, but perhaps strictness analysis is the most popular in the functional programming community. We will therefore concentrate on strictness analysis in our examples. The analyses performed by our compi... |

117 | Semantics and pragmatics of the lambda calculus - Wadsworth - 1971 |

100 | Projections for strictness analysis - Wadler, Hughes - 1987 |

93 | Abstract Interpretation a d Optimising Transformation f rAp- plicative programs - Mycroft - 1981 |

79 | Attribute grammars as a functional programming paradigm
- Johnsson
- 1987
(Show Context)
Citation Context ...formed supports forwards analysis as easily as backwards analysis. We consider this an advantage because it allows us to integrate the best kinds of analysis in a single framework. Attribute grammars =-=[9]-=- can be used to express forwards and backwards abstract interpretations, but attribute grammar systems are primarily concerned with manipulating syntax trees. Although there is a very close relationsh... |

76 | Functional Programming: Application and Implementation - Henderson - 1980 |

66 |
Backwards analysis of functional programs
- Hughes
- 1988
(Show Context)
Citation Context ...ssity information assumes various forms as it is being extracted from a flow graph. The ultimate form is a function: f0; : : : ; Ng ! f0; : : : ; Ng, which we call a domain mapping. This is a context =-=[6]-=- adapted to the abstract domain that we are using. A domain mapping is represented as an N +1 element vector, which appears as the value of the relevant attributes. A necessity attribute has the the f... |

63 | Wadler (editors). Report on the programming language Haskell – a non-strict purely functional language, version 1.2 - Hudak, Jones, et al. - 1992 |

60 | Concurrent Clean - Nöcker, Smetsers, et al. - 1991 |

54 | Strictness analysis on non-flat domains (by abstract interpretation
- Wadler
- 1987
(Show Context)
Citation Context ...iler (i.e. not just necessity analysis but also boxing analysis etc.) are based on non flat domains such as lists of integers, lists of lists etc. We use Wadler's linear domain as the abstract domain =-=[17]-=-, but we represent a point in the domain by a number in the range 0 to N rather than a string of 1, ? and 2 symbols. The 32 correspondence is: 1 2 n = 2n + 1 --- wheren = N \Xi 2sNisodd ? 2 n = 2n ---... |

47 | TIM: A Simple, Lazy Abstract Machine to Execute Supercombinators - Fairbairn, Wray - 1987 |

34 |
Strictness analysis – a practical approach
- Clack, Peyton-Jones
- 1985
(Show Context)
Citation Context ... Pieter Hartel is on sabbatical leave from the University of Amsterdam 25 practical and to a lesser extent theoretical difficulties when solving the domain equations by fixed point finding techniques =-=[2]-=-. Our first compiler [3] performed nothing more advanced than backwards abstract interpretation on a two-point domain with a very simple fixed point finding algorithm and it showed promising results. ... |

34 | Benchmarking implementations of lazy functional languages - Hartel, Langendoen - 1993 |

32 |
Flow analysis of lazy higher-order functional programs
- Jones, Andersen
- 2007
(Show Context)
Citation Context ...tion is called necessity analysis [11]. The focus of the research community seems to be shifting from strictness to necessity analysis, but it is not known whether one is more powerful than the other =-=[10]-=-. A greater variation is found in the abstract domains than in the analyses themselves. The more general the abstract domain, the more there are Pieter Hartel is on sabbatical leave from the Universit... |

31 |
Strictness analysis using abstract reduction
- Nocker
- 1993
(Show Context)
Citation Context ...he analyses with related work and show some performance results of both the compiler and the generated code. Figure 10 presents a few simple list functions taken from papers by Wadler [17] and Nocker =-=[13]-=-. The strictness results in the domain f0; 1; 2g are shown for each argument. Wadler's method restricted to this domain gives the same results. The method used by Nocker gives better results because h... |

29 | Evaluation transformers - a model for the parallel evaluation of functional languages - Burn - 1987 |

24 | 1979b) “Another Algorithm for Bracket Abstraction - Turner - 1979 |

23 | The Chalmers lazy-ML compiler - Augustsson, Johnsson - 1989 |

22 |
Design considerations for a parallel reduction machine
- Vree
- 1989
(Show Context)
Citation Context ...f the -K calculus [5]; 6. qsort (sin 1,...,sin 1024) sorts a list of 1024 real numbers using quick sort; 7. sched 7 calculates an optimum schedule of 7 parallel jobs with a branch and bound algorithm =-=[16]-=-; 8. wave 3 predicts the tides in a rectangular estuary of the North Sea over a period of 3 \Theta 20 minutes [16]. We have not described the run-time organisation that programs generated by our compi... |

21 | Why functional programming matters. The computer journal - Hughes - 1989 |

19 | eds). Report on Programming Language Haskell, A Non-strict Purely Functional Language (Version 1.0 - Hudak, Wadler - 1990 |

15 | Using projection analysis in compiling lazy functional programs - Burn - 1990 |

14 | Eds. Abstract Interpretation of Declarative Languages - ABRAMSKY, HANKIN - 1987 |

12 | Assessing the evaluation transformer model of reduction on the Spineless G-Machine - Finne, Burn - 1993 |

11 | The spineless tagless G-machine: a second attempt - Jones - 1991 |

10 | The Chalmers Lazy-ML compiler. The computer journal - Augustsson, Johnsson - 1989 |

10 | Strictness analysis—a practical approach - Clack, Peyton-Jones - 1985 |

9 | On the benefits of different analyses in the compilation of functional languages - Hartel, Glaser, et al. - 1991 |

8 | A Pragmatic Approach to the Analysis and Compilation of Lazy Functional Languages
- Glaser, Hartel, et al.
- 1990
(Show Context)
Citation Context ...batical leave from the University of Amsterdam 25 practical and to a lesser extent theoretical difficulties when solving the domain equations by fixed point finding techniques [2]. Our first compiler =-=[3]-=- performed nothing more advanced than backwards abstract interpretation on a two-point domain with a very simple fixed point finding algorithm and it showed promising results. Since then we have exten... |

8 | Implementing the, evaluation transformer model of reduction on parallel machines - Burn - 1991 |

7 | Functional Programming—Application and Implementation - Henderson - 1980 |

6 |
Statistics on graph reduction of SASL programs
- Hartel, Veen
- 1988
(Show Context)
Citation Context ...nts with our compiler to assess the performance of our method. The programs that we have available are the result of collecting performance data on implementations of functional programming languages =-=[4, 5]-=-. The programs we have used so far are: 1. fib 7 prints the seventh Fibonacci number using double recursion; 2. hamming 100 prints, in ascending order, the first 100 natural numbers whose prime factor... |

6 |
Interactive programs in a functional language: a functional implementation of an editor’, Software-Practice and Experience
- Koopman
- 1987
(Show Context)
Citation Context ...2. hamming 100 prints, in ascending order, the first 100 natural numbers whose prime factors are 2, 3 and 5; 3. em script runs a simple script through a functional implementation of the 1 text editor =-=[12]-=-; 46 Compiler pass nodes seconds 1 parse input 0 1.26 2 build flow graphs 15853 3.85 3 sort nodes 15853 1.20 4 connect SINK nodes to dangling edges 17234 0.21 5 sort nodes 17234 1.36 6 constant foldin... |

5 | Tree Transformations, Functional Languages, and Attribute Grammars - Wilhelm - 1990 |

5 | Statistics on graph reduction of SASL programs," Software practice and experience 18(3)pp - Hartel, Veen - 1988 |

4 | Garbage collection of linked structures - Cohen - 1981 |

3 |
Performance of lazy combinator graph reduction,” PRM project internal report
- Hartel
- 1989
(Show Context)
Citation Context ...nts with our compiler to assess the performance of our method. The programs that we have available are the result of collecting performance data on implementations of functional programming languages =-=[4, 5]-=-. The programs we have used so far are: 1. fib 7 prints the seventh Fibonacci number using double recursion; 2. hamming 100 prints, in ascending order, the first 100 natural numbers whose prime factor... |

3 | Performance of lazy combinator graph reduction. Software---practice and experience - Hartel - 1991 |

3 | Evaluation transformers—a model for the parallel evaluation of functional languages (extended abstract - Burn - 1987 |

3 | Performance of lazy combinator graph reduction - Hartel - 1991 |

2 |
A new method for strictness analysis on non-flat domains
- Jones, LeMetayer
- 1990
(Show Context)
Citation Context ...f strictness analysis. The analysis based on forwards abstract interpretation is usually given this name, while its counterpart based on backwards abstract interpretation is called necessity analysis =-=[11]-=-. The focus of the research community seems to be shifting from strictness to necessity analysis, but it is not known whether one is more powerful than the other [10]. A greater variation is found in ... |

1 | Compiling functional languages - Cox, Reeve - 1988 |

1 | FAST compiler user's guide. In FAST: Functional programming for arrays of transputers -- The collected papers - Hartel, Glaser, et al. - 1993 |