Abstract
Incremental, functional updates to arrays, executed in a non-deterministic manner, are shown to achieve the same effect (in both efficiency and functionality) as parallel assignment to imperative arrays. The strategy depends critically on the ability of a compiler to recognize not only that the incremental updates can be done destructively, but also that the updates may be done in any order. Special functional syntax is introduced that “captures” typical array-assignment patterns. The syntax falls somewhere in between the purely functional and (im)purely imperative, and makes the inferencing problem fairly easy. If nothing else, the work represents an interesting intellectual excercise in the relationship between non-determinism, side-effects, and parallelism.
Extended Abstract
Preview
Unable to display preview. Download preview PDF.
References
Arvind. Data structures for parallel computing. October 1986.
B. Goldberg. Multiprocessor Execution of Functional Programs. PhD thesis, Yale University, expected Spring 1987.
P. Hudak. ALFL Reference Manual and Programmer's Guide. Research Report YALEU/DCS/RR-322, Second Edition, Yale University, October 1984.
P. Hudak. Para-functional programming. Computer, 19(8):60–71, August 1986.
P. Hudak. A semantic model of reference counting and its abstraction (detailed summary). In Proc. 1986 ACM Conf. on LISP and Functional Prog., pages 351–363, ACM, August 1986.
P. Hudak and A. Bloss. The aggregate update problem in functional programming systems. In 12th ACM Sym. on Prin. of Prog. Lang., pages 300–314, ACM, 1985.
P. Hudak and L. Smith. Para-functional programming: a paradigm for programming multiprocessor systems. In 12th ACM Sym. on Prin. of Prog. Lang., pages 243–254, January 1986.
R.M. Keller. FEL programmer's guide. AMPS TR 7, University of Utah, March 1982.
J.R. Mcgraw. The val language: description and analysis. TOPLAS, 4(1):44–82, January 1982.
A. Mycroft. Abstract Interpretation and Optimizing Transformations for Applicative Programs. PhD thesis, Univ. of Edinburgh, 1981.
R.S. Nikhil, K. Pingali, and Arvind. Id Nouveau. Computation Structures Group Memo 265, Massachusetts Institute of Technology, Laboratory for Computer Science, July 1986.
J.T. O'Donnell. An architecture that efficiently updates associative aggregates in applicative programming language. In Functional Programming Languages and Computer Architecture, pages 164–189, Springer-Verlag LNCS 201, September 1985.
D.A. Schmidt. Detecting global variables in denotational specifications. ACM Trans. on Prog. Lang. and Systems, 7(2):299–310, 1985.
J. Schwarz. Verifying the safe use of destructive operations in applicative programs. In B. Robinet, editor, Program Transformations — Proc. of the 3rd Int'l Sym. on Programming, pages 395–411, Dunod Informatique, 1978.
Jr. Steele, Guy L. and W. Daniel Hillis. Connection machine lisp: fine-grained parallel symbolic processing. In Proc. 1986 ACM Conference on Lisp and Functional Programming, pages 279–297, ACM SIGPLAN/SIGACT/SIGART, Cambridge, Massachusetts, August 1986.
P. Wadler. A new array operation. In Workshop on Graph Reduction Techniques, Springer-Verlag LNCS, this volume, October 1986.
D.S. Wise. Design for a multiprocessing heap with on-board reference counting. In Functional Programming Languages and Computer Architecture, pages 289–304, Springer-Verlag LNCS 201, September 1985.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1987 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hudak, P. (1987). Arrays, non-determinism, side-effects, and parallelism: A functional perspective. In: Fasel, J.H., Keller, R.M. (eds) Graph Reduction. GR 1986. Lecture Notes in Computer Science, vol 279. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-18420-1_63
Download citation
DOI: https://doi.org/10.1007/3-540-18420-1_63
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-18420-1
Online ISBN: 978-3-540-47963-5
eBook Packages: Springer Book Archive