## Polymorphic Strictness Analysis Using Frontiers (1992)

Venue: | Proceedings of the 1993 ACM on Partial Evaluation and Semantics-Based Program Manipulation (PEPM '93), ACM |

Citations: | 8 - 0 self |

### BibTeX

@INPROCEEDINGS{Seward92polymorphicstrictness,

author = {Julian Seward},

title = {Polymorphic Strictness Analysis Using Frontiers},

booktitle = {Proceedings of the 1993 ACM on Partial Evaluation and Semantics-Based Program Manipulation (PEPM '93), ACM},

year = {1992},

pages = {186--193},

publisher = {Press}

}

### OpenURL

### Abstract

This paper shows how to implement sensible polymorphic strictness analysis using the Frontiers algorithm. A central notion is to only ever analyse each function once, at its simplest polymorphic instance. Subsequent non-base uses of functions are dealt with by generalising their simplest instance analyses. This generalisation is done using an algorithm developed by Baraki, based on embedding-closure pairs. Compared with an alternative approach of expanding the program out into a collection of monomorphic instances, this technique is hundreds of times faster for realistic programs. There are some approximations involved, but these do not seem to have a detrimental effect on the overall result. The overall effect of this technology is to considerably expand the range of programs for which the Frontiers algorithm gives useful results reasonably quickly. 1 Introduction The Frontiers algorithm was introduced in [CP85 ] as an allegedly efficient way of doing forwards strictness analysis, al...

### Citations

978 | A theory of type polymorphism in programming
- Milner
- 1978
(Show Context)
Citation Context ... [PL92 ]. For the purposes of this discussion, what is interesting is not the syntax of Core but the abstract interpretation of its types. Unsurprisingly, Core deals in the usual Milner-Hindley types =-=[Mil78]-=- which are base types, like Int, function spaces, user-defined sum-of-products types and type variables. The strictness analysis is BHA style forwards strictness analysis [BHA85]. We define functor D ... |

230 | Report on the programming language Haskell: a non-strict, purely functional language. Version 1.2
- Hudak, Jones, et al.
- 1992
(Show Context)
Citation Context ...zy functional language called Core. Core is not intended as a vehicle for writing functional programs. Rather, Core is a useful staging post in the journey from the considerable complexity of Haskell =-=[HWe90]-=- to nasty details of a particular back end. In particular, Core is used as an internal form in the forthcoming Glasgow Haskell Compiler. Additionally, Core has been used for didactic purposes, as the ... |

70 |
Strictness analysis for higher-order functions
- Burn, Hankin, et al.
- 1986
(Show Context)
Citation Context ... Milner-Hindley types [Mil78] which are base types, like Int, function spaces, user-defined sum-of-products types and type variables. The strictness analysis is BHA style forwards strictness analysis =-=[BHA85]-=-. We define functor D which gives the abstract interpretation of every type: D Int = 2 D ff = 2 where ff is any type variable D (typename te 1 ::: ten ) = ((D te 1 \Theta ::: \Theta D ten ) ? ) ? if t... |

54 | Strictness analysis on non-flat domains (by abstract interpretation
- Wadler
- 1987
(Show Context)
Citation Context ...s are represented in their uncurried form, so an eta-abstraction pass is necessary. The rules for user-defined types are a generalisation of Philip Wadler's original abstract interpretation for lists =-=[Wad87]-=-. In this scheme, a user-defined type is represented by the product of the domains of the type arguments, lifted twice for recursive types and once otherwise. Enumerated types, like Bool, are therefor... |

34 | Strictness analysis – a practical approach - Clack, Peyton-Jones - 1985 |

26 |
Strictness analysis and polymorphic invariance
- Abramsky
- 1986
(Show Context)
Citation Context ...ective way to deal with parametric polymorphism. Polymorphic strictness analysis in the large has until recently been a grey area. Investigations of the semantics of polymorphic functions by Abramsky =-=[Abr85]-=- showed that strictness analysis was polymorphically invariant but offered no method of exploiting the result. Subsequently, Hughes developed a way to deal effectively with first order Author's addres... |

25 | Abstract Interpretation of Functional Languages: From Theory to Practice
- Hunt
- 1991
(Show Context)
Citation Context ... is replaced by P = f fv 1 7! a 1 : : : vm 7! amg j a 1 2 M (A 1 ); : : : ; am 2 M (Am ) g where M (A) is the set of meet irreducible points in A. When A is first order, M (A) is easily computed: see =-=[Hun91]-=- chapter 8. Importantly, M (A) is typically a much smaller set than zapTop(A), so the amount of work is drastically cut. Proof Let F be a first order domain expression, and A be a finite first order l... |

22 |
Abstract Interpretation and the Parallel Evaluation of Functional Languages
- Burn
- 1987
(Show Context)
Citation Context ...which full evaluation is guaranteed to terminate, and those in 6 be called fE 0 ! : : : ! E 5 g where E 5 similarly is the top element. The terminological similarity to Burn's Evaluation Transformers =-=[Bur87]-=- is deliberate, since these points represent evaluation transformers. The backwards abstract interpretation of concat is Out In E 3 E 5 E 2 E 4 E 1 E 1 E 0 E 0 where the In column shows how much the a... |

17 | A relational approach to strictness analysis of higher order polymorphic functions
- Abramsky, Jensen
- 1991
(Show Context)
Citation Context ...hester, Oxford Road, Manchester M13 9PL, UK. Tel: +44 61 275 6291 Fax: +44 61 275 6236 polymorphism, on which a successful implementation was based [KHL91]. A more recent paper by Abramsky and Jensen =-=[AJ91]-=- investigated higher-order polymorphic functions but still fails to offer a useable algorithm. This impasse was finally broken by Baraki's work on embedding-closure pairs [Bar91] which supplied a simp... |

13 |
Fixed Points and Frontiers: A New Perspective
- Hunt, Hankin
- 1991
(Show Context)
Citation Context ...doing forwards strictness analysis, although this presentation was restricted to the two-point, first-order, monomorphic case. Further work showed what a versatile beast it was: higher-order analysis =-=[HH91]-=- and arbitrary non-flat datatypes [Sew91] were subsequently incorporated. Recently, Hankin and Hunt showed a variant [HH92] which greatly increased controllability by allowing arbitrary tradeoffs betw... |

13 |
Approximate Fixed Points in Abstract Interpretation
- Hankin, Hunt
- 1992
(Show Context)
Citation Context ... Conc. It will be interesting to see if this technology can be used to good effect in replacing uses of Abs and Conc for the purpose for which Hunt originally developed them: approximate fixed points =-=[HH92]-=-. One place in the Haskell Prelude where subsetting is essential to get any results at all in reasonable time is the definition of partition: select p x (ts, fs) --- p x = (x:ts, fs) --- otherwise = (... |

12 |
A note on abstract interpretation of polymorphic functions
- Baraki
- 1989
(Show Context)
Citation Context ...by Abramsky and Jensen [AJ91] investigated higher-order polymorphic functions but still fails to offer a useable algorithm. This impasse was finally broken by Baraki's work on embedding-closure pairs =-=[Bar91]-=- which supplied a simple way to relate strictness information of different polymorphic instances. One obvious way to deal with polymorphic programs is to expand them out into a collection of monomorph... |

7 |
Towards a Strictness Analyser for haskell: Putting Theory into Practice
- Seward
- 1991
(Show Context)
Citation Context ...ough this presentation was restricted to the two-point, first-order, monomorphic case. Further work showed what a versatile beast it was: higher-order analysis [HH91] and arbitrary non-flat datatypes =-=[Sew91]-=- were subsequently incorporated. Recently, Hankin and Hunt showed a variant [HH92] which greatly increased controllability by allowing arbitrary tradeoffs between work and quality of result. What rema... |

4 | Implementing Functional Languages: A Practical Approach - Jones, Lester - 1992 |

1 |
A prototype implementation of projection-based first-order polymorphic strictness analysis
- Kubiak, Hughes, et al.
- 1991
(Show Context)
Citation Context ...ent of Computer Science, Victoria University of Manchester, Oxford Road, Manchester M13 9PL, UK. Tel: +44 61 275 6291 Fax: +44 61 275 6236 polymorphism, on which a successful implementation was based =-=[KHL91]-=-. A more recent paper by Abramsky and Jensen [AJ91] investigated higher-order polymorphic functions but still fails to offer a useable algorithm. This impasse was finally broken by Baraki's work on em... |