Results 1 
4 of
4
Reuse by Program Transformation
 Functional Programming Trends 1999. Intellect, 2000. Selected papers from the 1st Scottish Functional Programming Workshop
, 2000
"... Certain adaptations, that are usually performed manually by functional programmers are formalized by program transformations in this paper. We focus on adaptations to obtain a more reusable version of a program or a version needed for a special use case. The paper provides a few examples, namely pro ..."
Abstract

Cited by 19 (9 self)
 Add to MetaCart
Certain adaptations, that are usually performed manually by functional programmers are formalized by program transformations in this paper. We focus on adaptations to obtain a more reusable version of a program or a version needed for a special use case. The paper provides a few examples, namely propagation of additional parameters, introduction of monadic style, and symbolic rewriting. The corresponding transformations are specified by inference rules in the style of natural semantics. Preservation properties such as type and semantics preservation are discussed. The overall thesis of this paper is that suitable operator suites for automated adaptations and a corresponding transformational programming style can eventually be combined with other programming styles, such as polymorphic programming, modular programming, or the monadic style, in order to improve reusability of functional programs. ⋆ Partial support received from the Netherlands Organization for Scientific Research (NWO) under the Generation of Program Transformation Systems project
PATH, a Program Transformation System for Haskell
, 2002
"... PATH (Programmer Assistant for Transforming Haskell) is a userdirected program transformation system for Haskell. This dissertation describes PATH and the technical contributions made in its development. PATH uses a new method for program transformation in which 1) total correctness is preserved, i ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
PATH (Programmer Assistant for Transforming Haskell) is a userdirected program transformation system for Haskell. This dissertation describes PATH and the technical contributions made in its development. PATH uses a new method for program transformation in which 1) total correctness is preserved, i.e., transformations can neither introduce nor eliminate nontermination; 2) infinite data structures and partial functions can be transformed; 3) generalization of programs can be done as well as specialization of programs; 4) neither an improvement nor an approximation relation is required to prove equivalence of programs—reasoning can be directly about program equivalence. Current methods (such as fold/unfold, expression procedures, and the tick calculus) all lack one or more of these features. PATH uses a more expressive logic for proving equivalence of programs than previous transformation systems. A logic more general than twolevel horn clauses (used in the CIP transformation system) is needed but the full generality of first order logic is not required. This logic used in PATH lends itself to the graphical manipulation of program derivations (i.e., proofs of program equivalence). PATH incorporates a language extension which makes programs and derivations more generic: programs and derivations can be generic with respect to the length of tuples; i.e., a function can be written that works uniformly on 2tuples, 3tuples, and etc. iii ivCopyright c ○ 2002 by Mark Anders Tullsen All rights reserved. v viAcknowledgments I wish to thank my advisor Paul Hudak for many years of constructive criticism, guidance, and encouragement. I also wish to thank the other readers of this dissertation: John Peterson, Zhong Shao, and Tim Sheard. To my wife, Teresa, and my children Andrew, Rachel, Zachary, and Jonathan: a heartfelt thanks for your support and patience while I have been working on this dissertation. Soli Deo Gloria. vii viiiContents
Lambda Calculi and Linear Speedups
 THE ESSENCE OF COMPUTATION: COMPLEXITY, ANALYSIS, TRANSFORMATION, NUMBER 2566 IN LECTURE NOTES IN COMPUTER SCIENCE
, 2002
"... The equational theories at the core of most functional programming are variations on the standard lambda calculus. The bestknown of these is the callbyvalue lambda calculus whose core is the valuebeta computation rule (#x.M)V M [ V / x ]whereV is restricted to be a value rather than an arb ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
The equational theories at the core of most functional programming are variations on the standard lambda calculus. The bestknown of these is the callbyvalue lambda calculus whose core is the valuebeta computation rule (#x.M)V M [ V / x ]whereV is restricted to be a value rather than an arbitrary term. This paper
A Hierarchy of Program Transformers
"... Abstract. In this paper, we describe a hierarchy of program transformers in which the transformer at each level of the hierarchy builds on top of the transformers at lower levels. The program transformer at the bottom of the hierarchy corresponds to positive supercompilation, and that at the next le ..."
Abstract
 Add to MetaCart
Abstract. In this paper, we describe a hierarchy of program transformers in which the transformer at each level of the hierarchy builds on top of the transformers at lower levels. The program transformer at the bottom of the hierarchy corresponds to positive supercompilation, and that at the next level corresponds to the first published definition of distillation [4]. We then show how the more recently published definition of distillation [5] can be described using this hierarchy. We see that this moves up through the levels of the transformation hierarchy until no further improvements can be made. The resulting definition of distillation uses only finite data structures, as opposed to the definition in [5], and we therefore argue that it is easier to understand and to implement. 1