Arrays, non-determinism, side-effects, and parallelism: A functional perspective

  • Paul Hudak
Part of the Lecture Notes in Computer Science book series (LNCS, volume 279)


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.


Mutual Exclusion Functional Program Incremental Approach Functional Language Imperative Program 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Arvind. Data structures for parallel computing. October 1986.Google Scholar
  2. [2]
    B. Goldberg. Multiprocessor Execution of Functional Programs. PhD thesis, Yale University, expected Spring 1987.Google Scholar
  3. [3]
    P. Hudak. ALFL Reference Manual and Programmer's Guide. Research Report YALEU/DCS/RR-322, Second Edition, Yale University, October 1984.Google Scholar
  4. [4]
    P. Hudak. Para-functional programming. Computer, 19(8):60–71, August 1986.Google Scholar
  5. [5]
    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.Google Scholar
  6. [6]
    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.Google Scholar
  7. [7]
    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.Google Scholar
  8. [8]
    R.M. Keller. FEL programmer's guide. AMPS TR 7, University of Utah, March 1982.Google Scholar
  9. [9]
    J.R. Mcgraw. The val language: description and analysis. TOPLAS, 4(1):44–82, January 1982.CrossRefGoogle Scholar
  10. [10]
    A. Mycroft. Abstract Interpretation and Optimizing Transformations for Applicative Programs. PhD thesis, Univ. of Edinburgh, 1981.Google Scholar
  11. [11]
    R.S. Nikhil, K. Pingali, and Arvind. Id Nouveau. Computation Structures Group Memo 265, Massachusetts Institute of Technology, Laboratory for Computer Science, July 1986.Google Scholar
  12. [12]
    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.Google Scholar
  13. [13]
    D.A. Schmidt. Detecting global variables in denotational specifications. ACM Trans. on Prog. Lang. and Systems, 7(2):299–310, 1985.CrossRefGoogle Scholar
  14. [14]
    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.Google Scholar
  15. [15]
    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.Google Scholar
  16. [16]
    P. Wadler. A new array operation. In Workshop on Graph Reduction Techniques, Springer-Verlag LNCS, this volume, October 1986.Google Scholar
  17. [17]
    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.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1987

Authors and Affiliations

  • Paul Hudak
    • 1
  1. 1.Department of Computer ScienceYale UniversityUSA

Personalised recommendations