MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  b

Download:
Download as a PDF | Download as a PS
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