Results 11 -
14 of
14
Mapping Adl to the Bird-Meertens Formalism
, 1994
"... Bulk data operations such as map and reduce are an elegant medium for expressing repetitive computation over aggregate data structures. They also serve as a tool for abstraction: not all details of the computation, such as the exact ordering of the constituent operations, need to be specified by the ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Bulk data operations such as map and reduce are an elegant medium for expressing repetitive computation over aggregate data structures. They also serve as a tool for abstraction: not all details of the computation, such as the exact ordering of the constituent operations, need to be specified by the programmer. A precise description of the behaviour of the bulk data operator is the preserve of the language implementor. If the implementation of these operators is parallel then they become a medium for expressing implicit data parallelism. There is a large body of work formally the relating bulk data operators to each other and to their underlying data types. Much of this research stems from Category Theory where a number of general properties of types and operators have been established. One theoretical framework in particular, the Bird-Meertens Formalism (BMF), has proved to be extremely useful. The BMF theory of a type provides a set of operators on that type and a set of algebraic id...
Transforming Sequences using Threaded Morphisms
"... Sequences are very useful structures in programming languages. Functional programming languages allow the convenient definition of transformations between sequence algebras and other types of data algebra. Sequence homomorphisms are an important class of such transformations. However, not all de ..."
Abstract
- Add to MetaCart
Sequences are very useful structures in programming languages. Functional programming languages allow the convenient definition of transformations between sequence algebras and other types of data algebra. Sequence homomorphisms are an important class of such transformations. However, not all desired transformations can be expressed as homomorphisms. This paper describes a class of transformation which is a generalisation of homomorphisms: sequence morphisms with threads. This class is shown to contain a number of interesting sub-classes of transformation. The morphisms are described using a simple functional programming language and are applied to the design and implementation of a simple object-oriented programming language feature. 1 Introduction This paper describes a class of sequence transformations or morphisms. The class is a generalisation of sequence homomorphisms and is shown to contain various interesting sub-classes. In order to describe this class of morphisms...
Efficient Functional Programming Communication Functions on the AP1000
, 1994
"... One problem of parallel computing is that parallel computers vary greatly in architecture so that a program written to run efficiently on a particular architecture, when porting to a different architecture, would often need to be changed and adapted substantially in order to run with reasonable perf ..."
Abstract
- Add to MetaCart
One problem of parallel computing is that parallel computers vary greatly in architecture so that a program written to run efficiently on a particular architecture, when porting to a different architecture, would often need to be changed and adapted substantially in order to run with reasonable performance on the target architecture. Porting with performance is, hence, labour-intensive and costly. A method of parallel programming using the Bird-Meertens Formalism where programs are formulated as compositions of (mainly) higher order functions on some data type in the data parallel functional style has been proposed as a solution. The library of (mainly) higher-order functions in which all communication and parallelism in a program is embedded could (it is argued) be implemented efficiently on different parallel architectures. This gives the advantage of portability between different architectures with reasonable and predictable performance without change in program source. ...

