Results 1 
9 of
9
Parallel Programming using Functional Languages
, 1991
"... I am greatly indebted to Simon Peyton Jones, my supervisor, for his encouragement and technical assistance. His overwhelming enthusiasm was of great support to me. I particularly want to thank Simon and Geoff Burn for commenting on earlier drafts of this thesis. Through his excellent lecturing Cohn ..."
Abstract

Cited by 54 (3 self)
 Add to MetaCart
I am greatly indebted to Simon Peyton Jones, my supervisor, for his encouragement and technical assistance. His overwhelming enthusiasm was of great support to me. I particularly want to thank Simon and Geoff Burn for commenting on earlier drafts of this thesis. Through his excellent lecturing Cohn Runciman initiated my interest in functional programming. I am grateful to Phil Trinder for his simulator, on which mine is based, and Will Partain for his help with LaTex and graphs. I would like to thank the Science and Engineering Research Council of Great Britain for their financial support. Finally, I would like to thank Michelle, whose culinary skills supported me whilst I was writingup.The Imagination the only nation worth defending a nation without alienation a nation whose flag is invisible and whose borders are forever beyond the horizon a nation whose motto is why have one or the other when you can have one the other and both
Program Calculation Properties of Continuous Algebras
, 1991
"... Defining data types as initial algebras, or dually as final coalgebras, is beneficial, if not indispensible, for an algebraic calculus for program construction, in view of the nice equational properties that then become available. It is not hard to render finite lists as an initial algebra and, ..."
Abstract

Cited by 23 (2 self)
 Add to MetaCart
Defining data types as initial algebras, or dually as final coalgebras, is beneficial, if not indispensible, for an algebraic calculus for program construction, in view of the nice equational properties that then become available. It is not hard to render finite lists as an initial algebra and, dually, infinite lists as a final coalgebra. However, this would mean that there are two distinct data types for lists, and then a program that is applicable to both finite and infinite lists is not possible, and arbitrary recursive definitions are not allowed. We prove the existence of algebras that are both initial in one category of algebras and final in the closely related category of coalgebras, and for which arbitrary (continuous) fixed point definitions ("recursion") do have a solution. Thus there is a single data type that comprises both the finite and the infinite lists. The price to be paid, however, is that partiality (of functions and values) is unavoidable.
Monadic Maps and Folds for Arbitrary Datatypes
 Memoranda Informatica, University of Twente
, 1994
"... Each datatype constructor comes equiped not only with a socalled map and fold (catamorphism), as is widely known, but, under some condition, also with a kind of map and fold that are related to an arbitrary given monad. This result follows from the preservation of initiality under lifting from the ..."
Abstract

Cited by 20 (0 self)
 Add to MetaCart
(Show Context)
Each datatype constructor comes equiped not only with a socalled map and fold (catamorphism), as is widely known, but, under some condition, also with a kind of map and fold that are related to an arbitrary given monad. This result follows from the preservation of initiality under lifting from the category of algebras in a given category to a certain other category of algebras in the Kleisli category related to the monad.
Derivation of Efficient Data Parallel Programs
 In 17th Australasian Computer Science Conference
, 1993
"... This paper considers the expression and derivation of efficient data parallel programs for SIMD and MIMD machines. It is shown that efficient parallel programs must utilise both sequential and parallel computation; these are termed hybrid programs. The BirdMeertens formalism, a calculus of higher ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
(Show Context)
This paper considers the expression and derivation of efficient data parallel programs for SIMD and MIMD machines. It is shown that efficient parallel programs must utilise both sequential and parallel computation; these are termed hybrid programs. The BirdMeertens formalism, a calculus of higher order functions, is used to derive and express programs. Our goal is to derive efficient parallel programs for a variety of machines by: starting with an abstract specification, deriving an abstract algorithm and successively refining this to more efficient and machine dependent algorithms incorporating greater implementation detail. Nested data structures are used to express hybrid algorithms. Using this technique efficient accumulate (scan/parallel prefix) algorithms are derived for SIMD and MIMD machines. 1 Introduction The main reason for parallel programming is to achieve high performance. Unfortunately designing and writing efficient parallel programs, especially for MIMD machines, i...
Matrices As Arrows! A Biproduct Approach to Typed Linear Algebra
 in: Mathematics of Program Construction
"... Abstract. Motivated by the need to formalize generation of fast running code for linear algebra applications, we show how an indexfree, calculational approach to matrix algebra can be developed by regarding matrices as morphisms of a category with biproducts. This shifts the traditional view of m ..."
Abstract

Cited by 6 (4 self)
 Add to MetaCart
(Show Context)
Abstract. Motivated by the need to formalize generation of fast running code for linear algebra applications, we show how an indexfree, calculational approach to matrix algebra can be developed by regarding matrices as morphisms of a category with biproducts. This shifts the traditional view of matrices as indexed structures to a typelevel perspective analogous to that of the pointfree algebra of programming. The derivation of fusion, cancellation and abide laws from the biproduct equations makes it easy to calculate algorithms implementing matrix multiplication, the kernel operation of matrix algebra, ranging from its divideandconquer version to the conventional, iterative one. From errant attempts to learn how particular products and coproducts emerge from biproducts, we not only rediscovered blockwise matrix combinators but also found a way of addressing other operations calculationally such as e.g. Gaussian elimination. A strategy for addressing vectorization along the same lines is also given. 1
Calculate categorically
 Formal Aspects of Computing
, 1992
"... Diagram chasing is an established proof technique in Category Theory. Algebraic calculation is a good alternative; made possible thanks to a notation for various unique arrows and a suitable formulation of initiality, and the calculational properties brought forward by initiality. ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
Diagram chasing is an established proof technique in Category Theory. Algebraic calculation is a good alternative; made possible thanks to a notation for various unique arrows and a suitable formulation of initiality, and the calculational properties brought forward by initiality.
An exercise in Transformational Programming: Backtracking and BranchandBound
 Science of Computer Programming
, 2004
"... We present a formal derivation of program schemes that are usually called Backtracking programs and BranchandBound programs. The derivation consists of a series of transformation steps, specifically algebraic manipulations, on the initial specification until the desired programs are obtained. T ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
(Show Context)
We present a formal derivation of program schemes that are usually called Backtracking programs and BranchandBound programs. The derivation consists of a series of transformation steps, specifically algebraic manipulations, on the initial specification until the desired programs are obtained. The wellknown notions of linear recursion and tail recursion are extended, for structures, to elementwise linear recursion and elementwise tail recursion; and a transformation between them is derived too.
Using underspecification in the derivation of some optimal partition algorithms
, 1990
"... Indeterminacy is inherent in the specification of optimal partition (and many more) algorithms, even though the algorithms themselves may be fully determinate. Indeterminacy is a notoriously hard phenomenon to deal with in a purely functional setting. In the paper “A Calculus Of Functions for Progra ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Indeterminacy is inherent in the specification of optimal partition (and many more) algorithms, even though the algorithms themselves may be fully determinate. Indeterminacy is a notoriously hard phenomenon to deal with in a purely functional setting. In the paper “A Calculus Of Functions for Program Derivation ” R. S. Bird tries to handle it by using underspecified functions. (Other authors have proposed to use ‘indeterminate ’ functions, and to use relations instead of functions.) In this paper we redo Bird’s derivation of the Leery and Greedy algorithm while being very precise about underspecification, and still staying in the functional framework. It turns out that Bird’s theorems are not exactly what one would like to have, and what one might understand from his wording of the theorems. We also give a derivation in the BirdMeertens style of a (linear time) optimal partition algorithm that was originally found by J. C. S. P. van der Woude. 1
Bags: A Parallel ADT for Functional Languages
"... It is impossible to express nondeterministic algorithms in conventional functional languages; even if such algorithms' results are deterministic. This paper considers the introduction of bags (multisets) into functional languages. These admit a nondeterministic implementation but put an onus ..."
Abstract
 Add to MetaCart
(Show Context)
It is impossible to express nondeterministic algorithms in conventional functional languages; even if such algorithms' results are deterministic. This paper considers the introduction of bags (multisets) into functional languages. These admit a nondeterministic implementation but put an onus on the programmer to prove that they are used determinately. Usually such proofs are straightforward. Bags make some algorithms easier to write and more efficient than would otherwise be possible. An implementation of bags, based on a rewriting system is sketched. 1 Introduction Traditionally functional programs have made great use of the list data type. However, often lists are not used as lists but as bags (multisets). A list is a data type representing an ordered sequence. A bag is a data type representing an unordered list. If lists are used in place of bags, this results in a biased implementation, which can be detrimental to program meaning and implementation. This paper proposes an extens...