Results 11 
17 of
17
Mapping Adl to the BirdMeertens 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
(Show Context)
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 BirdMeertens 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...
Functional Reading of Logic Programs
"... We propose an embedding of logic programming into lazy functional programming in which each predicate in a Prolog program becomes a Haskell function, in such a way that both the declarative and the procedural reading of the Prolog predicate are preserved. The embedding computes by means of operation ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
We propose an embedding of logic programming into lazy functional programming in which each predicate in a Prolog program becomes a Haskell function, in such a way that both the declarative and the procedural reading of the Prolog predicate are preserved. The embedding computes by means of operations on lazy lists. The state of each step in computation is passed on as a stream of answer substitutions, and all the logic operators of Prolog are implemented by explicit Haskell operators on these streams. The search strategy can be changed by altering the basic types of the embedding and the implementation of these operators. This model results in a perspicuous semantics for logic programs, and serves as a good example of modularisation in functional programming.
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, labourintensive and costly. A method of parallel programming using the BirdMeertens 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) higherorder 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. ...
Dialgebraic Semantics of Typed Object Calculi
"... Algebraic data type theory has a notion of structural recursion. Coalgebraic data types similarly have a notion of structural corecursion. In this thesis we study a third form of recursion: direcursion. The other two notions have been used in program derivations, correctness proofs, and in foundatio ..."
Abstract
 Add to MetaCart
(Show Context)
Algebraic data type theory has a notion of structural recursion. Coalgebraic data types similarly have a notion of structural corecursion. In this thesis we study a third form of recursion: direcursion. The other two notions have been used in program derivations, correctness proofs, and in foundations of functional and classbased languages. Direcursion, on the other hand, has not been extensively studied in the context of programming languages, and not at all in the context of algebraic techniques for objectoriented programming languages or typed object calculi. Yet, every object in object calculi is equipped with this recursion principle, and we will demonstrate that this principle can be used in foundations and in programming (as a powerful and general way of computing with objects), and when reasoning with object calculi programs, e.g. in correctness proofs. The family of object calculi developed by Abadi and Cardelli [3] is one of several proposed foundations for objectoriented programming languages. It is one of the more general frameworks available, and arguably the most general framework which fully supports subtyping. The study of direcursion involves dealing with several aspects of object calculus, with contributions ranging from giving an operational (natural) semantics of a typed object calculus and interpreting this semantics into fixed point calculus while proving soundness and adequacy results to directly constructing a denotational semantics of typed object calculi. As a result, this thesis lays a foundation for algebraic programming techniques and laws for typed object calculi based on direcursion. Contents
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 subclasses of transformation. The morphisms are described using a simple functional programming language and are applied to the design and implementation of a simple objectoriented 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 subclasses. In order to describe this class of morphisms...
A Class of Graph Algorithms
, 1996
"... Several graph problems are shown to be instances of the abstract problem of selecting representative elements from a closuregenerated set. These are the singlesource minimum paths problem, the reachability set of a given vertex, and the construction of rooted trees. Algorithms to compute such ..."
Abstract
 Add to MetaCart
Several graph problems are shown to be instances of the abstract problem of selecting representative elements from a closuregenerated set. These are the singlesource minimum paths problem, the reachability set of a given vertex, and the construction of rooted trees. Algorithms to compute such representatives are derived from the specification of the general problem. Instances of the algorithms include Dijkstra's minimum paths algorithm, and depthfirst/breadthfirst graph traversals. A relational calculus for algorithms derivation is used as algebraic framework. This calculus, of a pointfree reasoning character, is extended with categorical points to allow a clearer phrasing and manipulation of some algorithmic expressions. Pointwise reasoning can thus be naturally carried out within the extended calculus.