## List Processing Primitives for Parallel Computation (1993)

Venue: | Computer Languages |

Citations: | 6 - 0 self |

### BibTeX

@ARTICLE{Axford93listprocessing,

author = {Tom Axford and Mike Joy},

title = {List Processing Primitives for Parallel Computation},

journal = {Computer Languages},

year = {1993},

volume = {19},

pages = {19--1}

}

### OpenURL

### Abstract

A new model of list processing is proposed which is more suitable as a basic data structure for architecture-independent programming languages than the traditional model of lists. Its main primitive functions are: concatenate, which concatenates two lists; split, which partitions a list into two parts; and length, which gives the number of elements in a list. This model contains a degree of non-determinism which allows greater freedom to the implementation to achieve high performance on both parallel and serial architectures. Keywords: data structures, functional programming, list processing, parallel programming. 1 Introduction Lists have been used as basic data structures within programming languages since the 1950s. The most elegant and successful formulation was in Lisp [9] with its primitive functions car, cdr and cons, often now referred to by the more meaningful names of head, tail and cons respectively. Lisp and its model of list processing based on the head, tail and cons ...

### Citations

1313 | Monads for functional programming
- Wadler
- 1993
(Show Context)
Citation Context ... In the context of functional languages particularly, it has given rise to a style of programming which is clear, concise and powerful. This style is well documented in many publications, for example =-=[3]-=-. Published in Computer Languages 19(1), 1--12 (1993) 1 In the early development of Lisp, efficiency of implementation was a major concern, while the desire for an elegant and coherent semantic model ... |

537 |
S.: The Implementation of Functional Programming Languages
- Jones
- 1987
(Show Context)
Citation Context ...arthy's perceptive choice of the basic routines that operated on lists[10]. Axford & Joy --- List Processing 2 Despite the often proclaimed advantages of functional languages for parallel programming =-=[13]-=-, there has been very little progress in constructing really worthwhile parallel implementations of them. A large part of the problem lies in the difficulty of obtaining efficient parallel representat... |

420 |
Algorithmic Skeletons: Structured Management of Parallel Computation
- Cole
- 1991
(Show Context)
Citation Context ...eing very suitable for parallel implementation. Recently, there has been increasing interest in using the divide-and-conquer approach as a basis for the parallel implementation of functional languages=-=[1, 4, 8, 12, 16]-=-. Yet these pieces have not been brought together before in the way proposed in this paper, to suggest an alternative model for lists as basic data structures for parallel (and architecture-independen... |

191 |
A new implementation technique for applicative languages. Software: Practice and Experience
- TURNER
- 1979
(Show Context)
Citation Context ...ives (integers, reals and sum-products) and operators (which broadly correspond to the FLIC set of operators), together with the Y combinator to indicate recursion. The standard abstraction algorithm =-=[17]-=- is then performed to translate the graph into one containing the Turner combinators (S, K, I, B, C, S 0 , B 0 , C 0 ) and no lambdas. Acyclic graph reduction is then used to evaluate the resulting gr... |

183 |
Efficient Parallel Algorithms
- Gibbons, Rytter
- 1988
(Show Context)
Citation Context ...ed memory architecture. In theoretical analysis this usually means Axford & Joy --- List Processing 13 the PRAM model (Parallel Random Access Machine) as it is commonly called in the literature (e.g. =-=[5]-=-). In such a shared memory architecture, after the divide-and-conquer algorithm has divided the problem into a number of independent sub-problems, these subproblems can run concurrently. There is no a... |

143 |
Miranda: a non-strict functional language with polymorphic types
- Turner
- 1985
(Show Context)
Citation Context ...ives have given rise to a large number of programming languages over the three and a half decades since Lisp was invented; for example, following closely to the pure Lisp tradition are ML[20], Miranda=-=[19]-=- and Haskell[6]. The success of the Lisp model of list processing is due to a combination of its semantic elegance on the one hand and its simplicity and efficiency of implementation on the other. 1 I... |

97 |
Convex hulls of finite sets of points in two and three dimensions
- Preparata, Hong
- 1977
(Show Context)
Citation Context ...an be written using a divide-andconquer algorithm, using the fact that it is relatively easy to combine two non-overlapping convex polygons into a single convex polygon which encloses the original two=-=[15]-=-. (This involves much less work than combining two overlapping convex polygons.) We can take advantage of this if we divide the original set of points into non-overlapping subsets. An easy way to do t... |

68 |
Functional Programming Using Standard ML
- WikstrĂ¶m
- 1987
(Show Context)
Citation Context ...d cons primitives have given rise to a large number of programming languages over the three and a half decades since Lisp was invented; for example, following closely to the pure Lisp tradition are ML=-=[20]-=-, Miranda[19] and Haskell[6]. The success of the Lisp model of list processing is due to a combination of its semantic elegance on the one hand and its simplicity and efficiency of implementation on t... |

63 |
Functional Programming for Loosely-Coupled Multiprocessors
- Kelly
- 1989
(Show Context)
Citation Context ...eing very suitable for parallel implementation. Recently, there has been increasing interest in using the divide-and-conquer approach as a basis for the parallel implementation of functional languages=-=[1, 4, 8, 12, 16]-=-. Yet these pieces have not been brought together before in the way proposed in this paper, to suggest an alternative model for lists as basic data structures for parallel (and architecture-independen... |

42 | History of LISP
- McCarthy
- 1981
(Show Context)
Citation Context ...ertheless, the reason that Lisp was more successful than its list-processing competitors almost certainly had a lot to do with McCarthy's perceptive choice of the basic routines that operated on lists=-=[10]-=-. Axford & Joy --- List Processing 2 Despite the often proclaimed advantages of functional languages for parallel programming [13], there has been very little progress in constructing really worthwhil... |

34 | Recursion equations as a programming language - Turner - 1982 |

12 |
Divacon: A parallel language for scientific computing based on divide-and-conquer
- Mou
- 1990
(Show Context)
Citation Context ...uggest an alternative model for lists as basic data structures for parallel (and architecture-independent) programming languages. George Mou has adopted an alternative approach in his language Divacon=-=[11]-=-, in which arrays are used as the basic data structures, but with additional primitives to support the divide-and-conquer style of programming. In Divacon, the primitive operations on arrays are desig... |

9 |
FLIC - a Functional Language Intermediate Code
- Jones, L
- 1988
(Show Context)
Citation Context ... is for a shared memory architecture that falls within the CRCW PRAM category. The implementation method is combinator graph reduction. Input to the reducer is the low-level functional language, FLIC =-=[14]-=-, which is first of all translated to an acyclic graph representing an equivalent lambda-expression. This graph also contains primitives (integers, reals and sum-products) and operators (which broadly... |

3 |
A Micro-Manual for Lisp -- Not the Whole Truth
- McCarthy
- 1978
(Show Context)
Citation Context ...st processing, parallel programming. 1 Introduction Lists have been used as basic data structures within programming languages since the 1950s. The most elegant and successful formulation was in Lisp =-=[9]-=- with its primitive functions car, cdr and cons, often now referred to by the more meaningful names of head, tail and cons respectively. Lisp and its model of list processing based on the head, tail a... |

2 |
An elementary language construct for parallel programming
- Axford
- 1990
(Show Context)
Citation Context ...ives, using a divide-and-conquer strategy. The structure of divide-and-conquer programs makes them particularly well suited to parallel implementations on a very wide variety of parallel architectures=-=[1, 2]-=-. Most of the functions defined in Section 3.2 are identical in specification to functions in the Haskell standard prelude[6]. The Haskell standard prelude has been chosen as a starting point because ... |

2 |
Parallel combinator reduction: Some performance bounds
- Joy, Axford
- 1992
(Show Context)
Citation Context ...sors can work on reducing different parts of it simultaneously. The performance results are entirely consistent with the analysis given earlier. Details of this simulation work are published elsewhere=-=[7]-=-. 5 Three Applications Three different applications are outlined below to illustrate the use of the model in somewhat more complex situations than those considered previously. 5.1 Quicksort Hoare's qu... |

1 |
An Abstract Model for Parallel Programming
- Axford
- 1991
(Show Context)
Citation Context ...ives, using a divide-and-conquer strategy. The structure of divide-and-conquer programs makes them particularly well suited to parallel implementations on a very wide variety of parallel architectures=-=[1, 2]-=-. Most of the functions defined in Section 3.2 are identical in specification to functions in the Haskell standard prelude[6]. The Haskell standard prelude has been chosen as a starting point because ... |

1 |
An Algebraic Model for Divide-and-Conquer and Its
- Mou, Hudak
- 1988
(Show Context)
Citation Context ...eing very suitable for parallel implementation. Recently, there has been increasing interest in using the divide-and-conquer approach as a basis for the parallel implementation of functional languages=-=[1, 4, 8, 12, 16]-=-. Yet these pieces have not been brought together before in the way proposed in this paper, to suggest an alternative model for lists as basic data structures for parallel (and architecture-independen... |

1 |
Experimenting with Divide-and-Conquer Algorithms on a Parallel Graph Reduction Machine
- Rabhi, Manson
- 1990
(Show Context)
Citation Context |