## Questions and Answers About Categorical Data Types (1994)

Venue: | in Proceedings on the BCS Workshop on Bulk Data Types for Architecture Independence, London (20 |

Citations: | 7 - 0 self |

### BibTeX

@INPROCEEDINGS{Skillicorn94questionsand,

author = {D. B. Skillicorn},

title = {Questions and Answers About Categorical Data Types},

booktitle = {in Proceedings on the BCS Workshop on Bulk Data Types for Architecture Independence, London (20},

year = {1994}

}

### OpenURL

### Abstract

this document without fee provided it is copied in its entirety and this notice remains attached. the computation and communication of an operation on the data type are arranged. That's a job for the implementer and compiler writer. So there's a separation of concerns at just the right level --- programmers think about monolithic operations on data types, while implementers worry about how to make them happen. This provides architecture independence. If the target machine is replaced during the night by some new machine, even a completely different architecture, there is no need to alter the software. The differences between machines can be hidden by the compiler.

### Citations

758 |
Parallel program design: a foundation
- Chandy, Misra
- 1988
(Show Context)
Citation Context ... yet been built or even thought of. This suggests that a good model should be low-level enough that efficient implementations can be found. Models like higher order functional programming [20], UNITY =-=[9]-=-, and Maude [19] have the right kind of properties for programmers, but it has proven hard to build efficient implementations. Models like the Message Passing Interface [11], and Occam make it easy to... |

218 | An introduction to the theory of lists
- Bird
- 1987
(Show Context)
Citation Context ...n= log n processors. What other categorical data types have been built? The first type to be investigated was the type of join or concatenation lists, and more is known about them than any other type =-=[2, 5, 6]-=-. Such lists have three constructors: [ ] : 1 ! As[\Delta] : A ! As++ : A \Theta A ! A The first constructor makes an empty list, the second a singleton list, and the third concatenates two lists to m... |

184 |
Efficient Parallel Algorithms
- Gibbons, Rytter
- 1988
(Show Context)
Citation Context ...but collapse them to compute a single value rather than a tree structure. Under mild conditions on the function p 2 , reductions can be computed in parallel using an algorithm called tree contraction =-=[1, 12]-=-. This algorithm has a parallel time complexity O(log n) where n is the number of nodes in the tree. This is a big improvement in the potentially linear time of the recursion schema and justifies anot... |

141 | NESL: A Nested Data-Parallel Language
- Blelloch
- 1993
(Show Context)
Citation Context ...ms [22, 23]. Other types that have been built include bags or multisets, graphs [21], and arrays [4]. Thus categorical data types generalises languages such as Gamma [3], Parallel SETL [16], and NESL =-=[7]-=-, as well as more general object-oriented approaches such as Mentat [15] and C** [17].. When I'm deriving programs, how can I decide whether to use one algorithm or another? Don't I need to know the c... |

111 |
The Implementation of Functional Programming Languages
- Peyton-Jones
- 1987
(Show Context)
Citation Context ...that haven't yet been built or even thought of. This suggests that a good model should be low-level enough that efficient implementations can be found. Models like higher order functional programming =-=[20]-=-, UNITY [9], and Maude [19] have the right kind of properties for programmers, but it has proven hard to build efficient implementations. Models like the Message Passing Interface [11], and Occam make... |

104 | Easy-to-Use Object-Oriented Parallel Processing with Mentat
- Grimshaw
- 1993
(Show Context)
Citation Context ...ta types have been arrived at directly for common data types, sometimes from the perspective of data-parallelism [16], sometimes from the perspective of objects containing parallelism, such as Mentat =-=[15]-=-. The benefits of the categorical data type approach are not primarily in the particular program operations that it provides, but in the framework it provides for building and reasoning about parallel... |

87 |
A Simple Parallel Tree Contraction Algorithm
- Abrahamson, Dadoun, et al.
- 1989
(Show Context)
Citation Context ...but collapse them to compute a single value rather than a tree structure. Under mild conditions on the function p 2 , reductions can be computed in parallel using an algorithm called tree contraction =-=[1, 12]-=-. This algorithm has a parallel time complexity O(log n) where n is the number of nodes in the tree. This is a big improvement in the potentially linear time of the recursion schema and justifies anot... |

58 |
Algebraic identities for program calculation
- Bird
- 1989
(Show Context)
Citation Context ...n= log n processors. What other categorical data types have been built? The first type to be investigated was the type of join or concatenation lists, and more is known about them than any other type =-=[2, 5, 6]-=-. Such lists have three constructors: [ ] : 1 ! As[\Delta] : A ! As++ : A \Theta A ! A The first constructor makes an empty list, the second a singleton list, and the third concatenates two lists to m... |

58 | A Cost Calculus for Parallel Functional Programming
- Skillicorn, Cai
- 1995
(Show Context)
Citation Context ...chemas for maps and reductions. Many derivations involving lists have been done. Some small-scale implementations have been built [8], and quite a lot is known about code generation for list programs =-=[22, 23]-=-. Other types that have been built include bags or multisets, graphs [21], and arrays [4]. Thus categorical data types generalises languages such as Gamma [3], Parallel SETL [16], and NESL [7], as wel... |

46 | C ?? : A large-grain, objectoriented, data-parallel programming language
- Larus, Richards, et al.
- 1992
(Show Context)
Citation Context ..., and arrays [4]. Thus categorical data types generalises languages such as Gamma [3], Parallel SETL [16], and NESL [7], as well as more general object-oriented approaches such as Mentat [15] and C** =-=[17]-=-.. When I'm deriving programs, how can I decide whether to use one algorithm or another? Don't I need to know the complexity of each one? But I might not even know what kind of machine the program wil... |

36 |
Parallel programming in Maude
- Meseguer, Winkler
- 1992
(Show Context)
Citation Context ... or even thought of. This suggests that a good model should be low-level enough that efficient implementations can be found. Models like higher order functional programming [20], UNITY [9], and Maude =-=[19]-=- have the right kind of properties for programmers, but it has proven hard to build efficient implementations. Models like the Message Passing Interface [11], and Occam make it easy to build efficient... |

32 | An exploration of the Bird-Meertens formalism
- Backhouse
- 1989
(Show Context)
Citation Context ...n= log n processors. What other categorical data types have been built? The first type to be investigated was the type of join or concatenation lists, and more is known about them than any other type =-=[2, 5, 6]-=-. Such lists have three constructors: [ ] : 1 ! As[\Delta] : A ! As++ : A \Theta A ! A The first constructor makes an empty list, the second a singleton list, and the third concatenates two lists to m... |

24 | Parallel Programming, List Homomorphisms and the Maximum Segment Sum Problem
- Cole
- 1993
(Show Context)
Citation Context ...es is just a disguised way of computing the original function. However, sometimes it does give a real alternate way of the computing the function; such functions have been called almost homomorphisms =-=[10]-=-. So why are the properties of monolithic operations and equational transformation good ones for CDTs to have? The big problem with parallel computation today is finding the right level of abstraction... |

24 |
Algebras for Tree Algorithms. D
- Gibbons
- 1991
(Show Context)
Citation Context ...aluation of any homomorphism (although it may not be the best way). This helps with finding efficient implementations. Maybe an example would make it clearer? Let's take full homogeneous binary trees =-=[13]-=-. The objects of this type are binary trees with a value from some underlying type A at each node (leaves and internal nodes) --- so the trees are homogeneous --- and a node has either two descendants... |

19 | Efficient parallel algorithms for tree accumulations
- Gibbons, Cai, et al.
- 1994
(Show Context)
Citation Context ...of tree contraction or extensions of it, and so can be computed in O(log n) time on shared-memory MIMD machines [1], and distributed-memory MIMD machines with hypercube or hypercube-like interconnect =-=[14, 18]-=-. Reduction can even be computed in the same time bound using only n= log n processors. What other categorical data types have been built? The first type to be investigated was the type of join or con... |

14 | Optimal routing of parentheses on the hypercube
- Mayr, Werchner
- 1993
(Show Context)
Citation Context ...of tree contraction or extensions of it, and so can be computed in O(log n) time on shared-memory MIMD machines [1], and distributed-memory MIMD machines with hypercube or hypercube-like interconnect =-=[14, 18]-=-. Reduction can even be computed in the same time bound using only n= log n processors. What other categorical data types have been built? The first type to be investigated was the type of join or con... |

10 |
Evaluation of a Set of Message-Passing Routines in Transputer Networks
- Cai, Skillicorn
- 1992
(Show Context)
Citation Context ...e general recursion schema, it suffices to implement the two special schemas for maps and reductions. Many derivations involving lists have been done. Some small-scale implementations have been built =-=[8]-=-, and quite a lot is known about code generation for list programs [22, 23]. Other types that have been built include bags or multisets, graphs [21], and arrays [4]. Thus categorical data types genera... |

10 |
A Proposal for a User-Level, Message-Passing Interface in a Distributed Memory Environment
- Dongarra, Hempel, et al.
- 1992
(Show Context)
Citation Context ...nal programming [20], UNITY [9], and Maude [19] have the right kind of properties for programmers, but it has proven hard to build efficient implementations. Models like the Message Passing Interface =-=[11]-=-, and Occam make it easy to build efficient implementations, but do not help much with properties that programmers want. Categorical data types have both kinds of properties: they form a model that is... |

7 | Introduction to Gamma
- Banatre, M'etayer
- 1991
(Show Context)
Citation Context ...ut code generation for list programs [22, 23]. Other types that have been built include bags or multisets, graphs [21], and arrays [4]. Thus categorical data types generalises languages such as Gamma =-=[3]-=-, Parallel SETL [16], and NESL [7], as well as more general object-oriented approaches such as Mentat [15] and C** [17].. When I'm deriving programs, how can I decide whether to use one algorithm or a... |

4 |
A rationale for parallel programming with sets
- Hummel, Kelly
- 1993
(Show Context)
Citation Context ...ng control flow as well as data representation. Many of the ideas behind categorical data types have been arrived at directly for common data types, sometimes from the perspective of data-parallelism =-=[16]-=-, sometimes from the perspective of objects containing parallelism, such as Mentat [15]. The benefits of the categorical data type approach are not primarily in the particular program operations that ... |

4 |
Equational code generation: Implementing categorical data types for data parallelism
- Skillicorn, Cai
- 1994
(Show Context)
Citation Context ...chemas for maps and reductions. Many derivations involving lists have been done. Some small-scale implementations have been built [8], and quite a lot is known about code generation for list programs =-=[22, 23]-=-. Other types that have been built include bags or multisets, graphs [21], and arrays [4]. Thus categorical data types generalises languages such as Gamma [3], Parallel SETL [16], and NESL [7], as wel... |

3 |
Construction of Multidimensional Arrays as Categorical Data Types
- Banger
- 1994
(Show Context)
Citation Context ...ale implementations have been built [8], and quite a lot is known about code generation for list programs [22, 23]. Other types that have been built include bags or multisets, graphs [21], and arrays =-=[4]-=-. Thus categorical data types generalises languages such as Gamma [3], Parallel SETL [16], and NESL [7], as well as more general object-oriented approaches such as Mentat [15] and C** [17].. When I'm ... |

2 |
Graphs as a categorical data type
- Singh
- 1993
(Show Context)
Citation Context ...ne. Some small-scale implementations have been built [8], and quite a lot is known about code generation for list programs [22, 23]. Other types that have been built include bags or multisets, graphs =-=[21]-=-, and arrays [4]. Thus categorical data types generalises languages such as Gamma [3], Parallel SETL [16], and NESL [7], as well as more general object-oriented approaches such as Mentat [15] and C** ... |