Download:
|
by Patricia Johann, Eelco Visser
http://www.cs.uu.nl/~visser/ftp/JV2000.ps
Add To MetaCart
Abstract:
Abstract Stratego is a domain-specic language for the specication of program transformation systems. The design of Stratego is based on the paradigm of rewriting strategies: user-denable programs in a little language of strategy operators determine where and in what order transformation rules are (automatically) applied to a program. The separation of rules and strategies supports modularity of specications. Stratego also provides generic features for specication of program traversals. In this paper we present a case study of Stratego as applied to a non-trivial problem in program transformation. We demonstrate the use of Stratego in eliminating intermediate data structures from (also known as deforesting) functional programs via the warm fusion algorithm of Launchbury and Sheard. This algorithm has been speci ed in Stratego and embedded in a fully automatic transformation system for kernel Haskell. The entire system consists of about 2600 lines of specication code, which breaks down into 1850 lines for a general framework for Haskell transformation and 750 lines devoted to a highly modular, easily extensible specication of
Citations
|
588
|
Compiling with Continuations
– Appel
- 1992
|
|
529
|
A transformation system for developing recursive programs
– Burstall, Darlington
- 1977
|
|
366
|
Deforestation: Transforming programs to eliminate trees
– Wadler
- 1988
|
|
275
|
Functional programming with bananas, lenses, envelopes and barbed wire
– Meijer, Fokkinga, et al.
- 1991
|
|
179
|
A short cut to deforestation
– Gill, Launchbury, et al.
- 1993
|
|
141
|
The concept of a supercompiler
– Turchin
- 1986
|
|
121
|
A fold for all seasons
– Sheard, Fegaras
- 1993
|
|
106
|
Data structures and program transformation
– Malcolm
- 1990
|
|
106
|
Building Program Optimizers with Rewriting Strategies
– Visser, Benaissa, et al.
- 1998
|
|
98
|
and order in algorithmics
– Law
- 1992
|
|
84
|
Warm fusion: deriving build-catas from recursive definitions
– Launchbury, Sheard
- 1995
|
|
72
|
A transformation-based optimiser for Haskell
– Jones, Santos
- 1998
|
|
67
|
Safe fusion of functional expressions
– Chin
|
|
58
|
The nofib benchmark suite of Haskell programs.In
– Partain
- 1992
|
|
54
|
A Categorical Programming Language
– Hagino
- 1987
|
|
53
|
From ML to Ada: strongly-typed language interoperability via source translation
– Tolmach, Oliva
- 1998
|
|
51
|
Deriving structural hylomorphisms from recursive definitions
– Hu, Iwasaki, et al.
- 1996
|
|
49
|
Cheap deforestation for non-strict functional languages
– Gill
- 1996
|
|
39
|
Compilation of functional languages by program transformation
– Fradet, Métayer
- 1991
|
|
37
|
Homomorphisms and promotability
– Malcolm
- 1989
|
|
37
|
Strategic pattern matching
– Visser
- 1999
|
|
31
|
et al. Report on the programming language Haskell 98
– Jones, Hughes
- 1999
|
|
28
|
Language Independent Traversals for Program Transformation
– Visser
|
|
27
|
Warm fusion in stratego: A case study in the generation of program transformation systems
– Johann, Visser
- 2000
|
|
23
|
A Core Language for Rewriting
– Visser, Benaissa
|
|
14
|
Ecient annotated terms. Software|Practice & Experience
– Brand, Jong, et al.
- 2000
|
|
12
|
den Brand and Eelco Visser. Generation of formatters for context-free languages
– van
- 1996
|
|
10
|
Unboxed values as class citizens in a non-strict functional language
– Jones, Launchbury
- 1991
|
|
9
|
Syntax De for Language Prototyping
– Visser
- 1997
|
|
9
|
The Stratego Library
– Visser
- 1999
|
|
5
|
Catamorphism Based Program Transformations for Non-Strict Functional Languages
– Nemeth
- 2000
|
|
3
|
An implementation of warm fusion. Available at ftp://ftp.cse.ogi.edu/pub/pacsoft/wf
– Johann
- 1997
|