We describe a facility for improving optimization of Haskell programs using rewrite rules. Library authors can use rules to express domain-specific optimizations that the compiler cannot discover for itself. The compiler can also generate rules internally to propagate information obtained from automated analyses. The rewrite mechanism is fully implemented in the released Glasgow Haskell Compiler.
|
1122
|
Introduction to Functional Programming
– Bird, Wadler
- 1988
|
|
1078
|
Aspect-oriented programming
– Kiczales, Lamping, et al.
- 1997
|
|
622
|
Term Rewriting and All That
– Baader, Nipkow
- 1998
|
|
244
|
Why functional programming matters
– Hughes
- 1989
|
|
241
|
Checking system rules using system-specific, programmer-written compiler extensions
– Engler, Chelf, et al.
- 2000
|
|
158
|
QuickCheck: A lightweight tool for random testing of Haskell programs
– Claessen, Hughes
- 2000
|
|
154
|
A short cut to deforestation
– Gill, Launchbury, et al.
|
|
119
|
Principles of Maude
– Clavel, Eker, et al.
- 1996
|
|
98
|
Building program optimizers with rewriting strategies
– Visser, Benaissa, et al.
- 1998
|
|
75
|
An annotation language for optimizing software libraries
– Guyer, Lin
- 1999
|
|
73
|
A transformation-based optimiser for Haskell. Science of Computer Programming
– Jones, Santos
- 1998
|
|
68
|
Algebra of Programming
– Bird, Moor
- 1997
|
|
66
|
Sharlit { A tool for building optimizers
– Tjiang, K, et al.
- 1992
|
|
57
|
The nofib benchmark suite of Haskell programs
– Partain
- 1992
|
|
52
|
Active libraries: Rethinking the roles of compilers and libraries
– Veldhuizen, Gannon
- 1998
|
|
37
|
RG: A Case-Study for AspectOriented Programming
– Mendhekar, Kiczales, et al.
- 1997
|
|
34
|
Telescoping languages: A strategy for automatic generation of scientific problem-solving systems from annotated libraries
– Kennedy, Broom, et al.
|
|
34
|
Secrets of the Glasgow Haskell Compiler inliner
– Jones, Marlow
- 2002
|
|
34
|
Once upon a polymorphic type
– Wansbrough, Jones
- 1999
|
|
33
|
Unboxed values as first class citizens
– Jones, Launchbury
- 1991
|
|
30
|
OPAL: Design and Implementation of an Algebraic Programming Language
– Didrich, Fett, et al.
- 1994
|
|
28
|
Generic program transformation
– Moor, Sittampalam
- 1998
|
|
28
|
Imperative program transformation by rewriting
– Lacey, Moor
- 2001
|
|
25
|
How to uniformly specify program analysis and transformation with graph rewrite systems
– Assmann
- 1996
|
|
22
|
Compiling embedded languages
– Elliott, Finne, et al.
- 2003
|
|
19
|
Optimizing the use of high performance software libraries
– Guyer, Lin
- 2000
|
|
18
|
Checking system rules using system-speci programmer-written compiler extensions
– Engler, Chelf, et al.
- 2000
|
|
17
|
DFA&OPT-MetaFrame: A tool kit for program analysis and optimization
– Klein, Knoop, et al.
- 1996
|
|
15
|
KHEPERA: A system for rapid implementation of domain specific languages
– Faith, Nyland, et al.
- 1997
|
|
14
|
Functional array fusion
– Chakravarty, Keller
- 2001
|
|
13
|
Implementing computational systems with constraints
– Kirchner, Kirchner, et al.
- 1993
|
|
11
|
D.Richter. Transformation in intentional programming
– Aitken, Dickens, et al.
- 1998
|
|
10
|
Pattern-Based Languages for Prototyping of Compiler Optimizers
– Farnum
- 1990
|
|
7
|
The TAMPR program transformation system: Design and applications
– Boyle, Harmer, et al.
|
|
6
|
Unboxed values as class citizens
– Jones, S, et al.
- 1991
|
|
5
|
Warm fusion
– Launchbury, Sheard
- 1995
|
|
5
|
OPTRAN - a language/system for the specification of program transformations: System overview and experiences
– Lipps, Moncke, et al.
- 1988
|
|
4
|
Modular lazy search for constraint satisfaction problems
– Nordin, Tolmach
- 2000
|
|
3
|
The design and implementation
– Whitfield, Soffa
- 1994
|
|
2
|
OPTRAN - a language/system for the speci of program transformations: System overview and experiences
– Lipps, Moncke, et al.
- 1988
|
|
2
|
The Hugs graphics library
– Reid
- 2000
|
|
2
|
Strategic pattern matching, in: Rewriting Techniques and Applications (RTA’99
– Visser
- 1999
|
|
1
|
The design and implementation
– Whit, Soa
- 1994
|
|
1
|
OPT-METAFrame: A tool kit for program analysis and optimization
– DFA
- 1984
|
|
1
|
Pattern-Based Languages for Prototyping of Compiler Optimizers
– Farhum
- 1990
|