Department of Computer Science and Technology

Technical reports

Implementing aggregates in parallel functional languages

T.J.W. Clarke

August 1989, 13 pages

DOI: 10.48456/tr-176

Abstract

Many constructions which are difficult to write efficiently in pure functional languages have as underlying semantics an aggregate. An aggregate is a collection of individual elements whose order does not matter, it can thus be constructed functionally using a commutative associative combining operator. Equivalent and more efficient implementations for aggregates exist which are operational. A new construction, the A-thread, an aggregate specified operationally which introduces provably local data indeterminacy, is defined. Operational specification of an aggregate, in which each element is specified by a separate function call, does not necessarily destroy referential transparency in a functional language. Aggregates defined using joins on partial orders allow early termination if an operational implementation is used: Arvind’s ‘I-structures’ and Burton’s ‘improving values’ are examples of this.

Full text

PDF (1.0 MB)

BibTeX record

@TechReport{UCAM-CL-TR-176,
  author =	 {Clarke, T.J.W.},
  title = 	 {{Implementing aggregates in parallel functional languages}},
  year = 	 1989,
  month = 	 aug,
  url = 	 {https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-176.pdf},
  institution =  {University of Cambridge, Computer Laboratory},
  doi = 	 {10.48456/tr-176},
  number = 	 {UCAM-CL-TR-176}
}