Results 1 
7 of
7
Improving Programs which Recurse over Multiple Inductive Structures
 In ACM SIGPLAN Workshop on Partial Evaluation and SemanticsBased Program Manipulation (PEPM'94
, 1994
"... This paper considers generic recursion schemes for programs which recurse over multiple inductive structures simultaneously, such as equality, zip and the nth element of a list function. Such schemes have been notably absent from previous work. This paper defines a uniform mechanism for defining suc ..."
Abstract

Cited by 25 (6 self)
 Add to MetaCart
This paper considers generic recursion schemes for programs which recurse over multiple inductive structures simultaneously, such as equality, zip and the nth element of a list function. Such schemes have been notably absent from previous work. This paper defines a uniform mechanism for defining such programs and shows that these programs satisfy generic theorems. These theorems are the basis for an automatic improvement algorithm. This algorithm is an improvement over the algorithm presented earlier [14] because, in addition to inducting over multiple structures, it can be incorporated into any algebraic language and is no longer restricted to a "safe" subset. 1 Introduction In previous work [14, 15, 6, 4, 5] we have shown how programming algebraically with generic recursion schemes provides a theory amenable to program calculation [13]. This theory provides a basis for automatic optimization techniques which capture many wellknown transformations. Unfortunately, these recursion sc...
Substitution: A formal methods case study using monads and transformations
, 1994
"... The specification and derivation of substitution for the de Bruijn representation of  terms is used to illustrate programming with a functionsequence monad. The resulting program is improved by interactive program transformation methods into an efficient implementation that uses primitive machine ..."
Abstract

Cited by 19 (3 self)
 Add to MetaCart
The specification and derivation of substitution for the de Bruijn representation of  terms is used to illustrate programming with a functionsequence monad. The resulting program is improved by interactive program transformation methods into an efficient implementation that uses primitive machine arithmetic. These transformations illustrate new techniques that assist the discovery of the arithmetic structure of the solution. Introduction Substitution is one of many problems in computer science that, once understood in one context, is understood in all contexts. Why, then, must a different substitution function be written for every abstract syntax implemented? This paper shows how to define substitution once and use the monadic structure of the definition to instantiate it on different abstract syntax structures. It also shows how to interactively derive an efficient implementation of substitution from this very abstract definition. The authors are supported in part by a grant fr...
Software Design for Reliability and Reuse  A ProofOfConcept Demonstration
 IN CONFERENCE ON TRIADA ’94
, 1994
"... The Pacific Software Research Center is developing a new method to support reuse and introduce reliability into software. The method is based on design capture in domain specific design languages and automatic program generation using a reusable suite of program transformation tools. The transformat ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
The Pacific Software Research Center is developing a new method to support reuse and introduce reliability into software. The method is based on design capture in domain specific design languages and automatic program generation using a reusable suite of program transformation tools. The transformation tools, and a domain specific component generator incorporating them, are being implemented as part of a major project underway at the Oregon Graduate Institute of Science and Technology. The processes used in tool development and application of the method are being captured. Once completed, an experiment will be performed on the generator to assess its usability and flexibility. This paper describes the Software Design for Reliability and Reuse method and illustrates its application to the Message Translation and Validation domain, a problem identified by our sponsors so that our method can be compared directly to a previously existing stateoftheart solution based on code templates pr...
Programming with Algebras
 Advanced Functional Programming, number 925 in Lecture Notes in Computer Science
, 1995
"... Introduction From the early days of computing, many individuals have recognized that algebras provide interesting mathematical models for at least some aspects of programs. In mathematics, an algebra consists of a set (called the carrier of the algebra), together with a finite set of total function ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
Introduction From the early days of computing, many individuals have recognized that algebras provide interesting mathematical models for at least some aspects of programs. In mathematics, an algebra consists of a set (called the carrier of the algebra), together with a finite set of total functions that have the carrier set as their common codomain. The algebras we learn in school, however, are usually those derived from number theory and programs are more diverse, if not richer, than operations on numbers. A somewhat more abstract notion, called signature algebras, has been used for some time to to model abstract data types [GTW78]. A signature defines a set of typed operator symbols without specifying functions that would be the actual operators. Thus a signature defines a class of algebras, namely the algebras whose operators conform to the typing constraints imposed by the signature. Signature algebras have been helpful in understanding the issues involved in abstract dat
Reactive Functional Programming
 Programming Concepts and Methods (PROCOMET 98). ChapmanHall
, 1998
"... Reactive systems respond to concurrent, possibly unsynchronized streams of input events. Programming reactive systems is challenging without language support for eventtriggered actions. It is even more challenging to reason about reactive systems. This paper explores a new conceptual basis for appl ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
Reactive systems respond to concurrent, possibly unsynchronized streams of input events. Programming reactive systems is challenging without language support for eventtriggered actions. It is even more challenging to reason about reactive systems. This paper explores a new conceptual basis for applying functional programming techniques to the design and formal veri#cation of reactive systems. The mathematical foundation for this approach is based upon signature coalgebras and derived proof rules for coinduction. The concepts are illustrated with an example that has been used with the language Esterel. 1 Introduction Reactive systems are characterized by sequences of historydetermined reactions to external events. It is known that a nonstrict functional programming language can provide a suitable linguistic vehicle for programming reactive systems because streams, modeling temporal sequences of values, can be represented. It is necessary to represent more than streams, however. Cur...
Optimizing Algebraic Programs
, 1994
"... This paper considers a programming language where all control is encoded in algebras ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
This paper considers a programming language where all control is encoded in algebras