Results 1  10
of
10
Structured programming with go to statements
 Computing Surveys
, 1974
"... A consideration of several different examples sheds new light on the problem of ereating reliable, wellstructured programs that behave efficiently. This study focuses largely on two issues: (a) improved syntax for iterations and error exits, making it possible to write a larger class of programs c ..."
Abstract

Cited by 58 (3 self)
 Add to MetaCart
A consideration of several different examples sheds new light on the problem of ereating reliable, wellstructured programs that behave efficiently. This study focuses largely on two issues: (a) improved syntax for iterations and error exits, making it possible to write a larger class of programs clearly and efficiently without go to state
Recursion from Iteration
 Lisp and Symbolic Computation
, 1994
"... . In a simplytyped, callbyvalue (CBV) language with firstclass continuations, the usual CBV fixpoint operator can be defined in terms of a simple, infinitelylooping iteration primitive. We first consider a natural but flawed definition, based on exceptions and "iterative deepening" of ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
. In a simplytyped, callbyvalue (CBV) language with firstclass continuations, the usual CBV fixpoint operator can be defined in terms of a simple, infinitelylooping iteration primitive. We first consider a natural but flawed definition, based on exceptions and "iterative deepening" of finite unfoldings, and point out some of its shortcomings. Then we present the proper construction using full firstclass continuations, with both an informal derivation and a proof that the behavior of the defined operator faithfully mimics a "builtin" recursion primitive. In fact, given an additional uniformity assumption, the construction is a twosided inverse of the usual definition of iteration from recursion. Continuing, we show that the CBV looping primitive is in fact the directstyle equivalent of a continuationpassingstyle fixpoint, and that this correspondence extends all the way to traditional definitions of these operators in terms of reflexive types. 1. Introduction 1.1. Background ...
The Many Disguises of Accumulation
, 1991
"... Several descriptions of basically one transformation technique, viz. accumulation, are compared. Their basis, viz. the associativity and the existence of a neutral element inherent in a monoid, is identified. Keywords transformational programming, factorial, fast reverse, accumulation, continuation ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Several descriptions of basically one transformation technique, viz. accumulation, are compared. Their basis, viz. the associativity and the existence of a neutral element inherent in a monoid, is identified. Keywords transformational programming, factorial, fast reverse, accumulation, continuations, lambda abstraction, generalisation, tail recursion, implementation of lists. This research has been sponsored by the Netherlands Organisation for Scientific Research (NWO), under grant NF 63/62518 (the STOP  Specification and Transformation Of Programs  project). 1 Introduction One of the first program transformations that appeared in the literature was the accumulation transformation. The transformation is now classic, although not everyone may know it under exactly this name. In this note, I try to relate several descriptions of this program transformation technique. In a purely algebraic view, it is the exploitation of the properties of a monoid. In literature, it can be fou...
Recursion Versus Iteration at HigherOrders
, 1997
"... . We extend the wellknown analysis of recursionremoval in firstorder program schemes to a higherorder language of finitely typed and polymorphically typed functional programs, the semantics of which is based on callbyname parameterpassing. We introduce methods for recursionremoval, i.e. for ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
. We extend the wellknown analysis of recursionremoval in firstorder program schemes to a higherorder language of finitely typed and polymorphically typed functional programs, the semantics of which is based on callbyname parameterpassing. We introduce methods for recursionremoval, i.e. for translating higherorder recursive programs into higherorder iterative programs, and determine conditions under which this translation is possible. Just as finitely typed recursive programs are naturally classified by their orders, so are finitely typed iterative programs. This syntactic classification of recursive and iterative programs corresponds to a semantic (or computational) classification: the higher the order of programs, the more functions they can compute. 1 Background and Motivation Although our analysis is entirely theoretical, as it combines methods from typed calculi, from abstract recursion theory and from denotational semantics, the problems we consider have a strong pra...
Future Directions in Program Transformation
"... vation of semantics. When deriving from a program P1 a new program P2 by transformation, we need to preserve semantics, that is, we want Sem(P 1) = Sem(P 2) for some given semantic function Sem. Actually, we want the equivalence induced by Sem to be a congruence w.r.t. the operations which are use ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
vation of semantics. When deriving from a program P1 a new program P2 by transformation, we need to preserve semantics, that is, we want Sem(P 1) = Sem(P 2) for some given semantic function Sem. Actually, we want the equivalence induced by Sem to be a congruence w.r.t. the operations which are used for building programs. This is an important engineering requirement, because for the maintenance and the enhancement of software products we have to allow for the substitution of software modules by new, better modules which satisfy equivalent specifications, and this substitution should not affect the semantics of the programs. For these reasons we look for compositional semantics, that is, semantics which can be defined as homomorphisms over the structure of the programs. Moreover, in order to allow for language evolution we look for tech
Relative Complexity of Algebras
, 1981
"... A simple algebraic model is proposed fr measuring the relative complexity of programming systems. The appropriateness of this model is illustrated by its use as a framework for the statement and proof of results dealing with codingindependent limitations on the relative complexity of basic alge ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
A simple algebraic model is proposed fr measuring the relative complexity of programming systems. The appropriateness of this model is illustrated by its use as a framework for the statement and proof of results dealing with codingindependent limitations on the relative complexity of basic algebras.
A Program Transformations Methodology for CCS
 In Proceedings of the Fifth Italian Conference of Theoretical Computer Science
, 1995
"... The use of the program transformation methodology has been extensively studied in the framework of functional and logical languages. The aim of this paper is to evaluate the feasibility of a program transformation technique for concurrent programs, and in particular for CCS ones, with the aim of ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The use of the program transformation methodology has been extensively studied in the framework of functional and logical languages. The aim of this paper is to evaluate the feasibility of a program transformation technique for concurrent programs, and in particular for CCS ones, with the aim of obtaining a program which has a "more manageable " syntactic form than the initial one, for example for proving properties of programs. In the paper we define a transformation methodology for CCS based on the "rules + strategies" approach. We first define a set of general "equivalence preserving" rules, which are a specialization, for CCS, of classical program transformation rules, such as Folding and Unfolding. Then we define a class of transformation rules specific for CCS. Finally, we give a strategy, using the defined rules, to transform, if possible, a CCS program into one whose operational semantics is a finite state transition system. The problem is significant, since most of the existing verification environments for CCSlike languages are based on an internal finite state representation of the program. We show that the set of programs for which our strategy succeeds properly contains the set of programs for which other existing methods succeed. 1
unknown title
"... In this paper is presented a technique for transforming a class of recursive equations called linear equations into iterative equations. Linear equations are characterized by involving at the most one recursive call for any invocation. In contrast to the conventional techniques, the scheme of progra ..."
Abstract
 Add to MetaCart
In this paper is presented a technique for transforming a class of recursive equations called linear equations into iterative equations. Linear equations are characterized by involving at the most one recursive call for any invocation. In contrast to the conventional techniques, the scheme of program transformation presented here involves finding the solution of the given linear equation and transforming this solution. The solutions of linear equations can always be expressed using a construct called abstract sequence. Two classes of abstract sequence programs are identified: rightassociative and leftassociative sequence programs. The former are obtained by solving linear equations and the latter correspond to iterative programs. The task of transforming linear recursive programs into iterative programs is thus reduced to the task of transforming rightassociative sequence programs into left associative ones. Various transformation rules are developed based on an algebra of functional programs.