Skip to main content

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

  • Arrays
  • Conference paper
  • First Online:
Book cover Graph Reduction (GR 1986)

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

Included in the following conference series:

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

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Arvind. Data structures for parallel computing. October 1986.

    Google Scholar 

  2. B. Goldberg. Multiprocessor Execution of Functional Programs. PhD thesis, Yale University, expected Spring 1987.

    Google Scholar 

  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. P. Hudak. Para-functional programming. Computer, 19(8):60–71, August 1986.

    Google Scholar 

  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. 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. 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. R.M. Keller. FEL programmer's guide. AMPS TR 7, University of Utah, March 1982.

    Google Scholar 

  9. J.R. Mcgraw. The val language: description and analysis. TOPLAS, 4(1):44–82, January 1982.

    Article  Google Scholar 

  10. A. Mycroft. Abstract Interpretation and Optimizing Transformations for Applicative Programs. PhD thesis, Univ. of Edinburgh, 1981.

    Google Scholar 

  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. 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. D.A. Schmidt. Detecting global variables in denotational specifications. ACM Trans. on Prog. Lang. and Systems, 7(2):299–310, 1985.

    Article  Google Scholar 

  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. 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. P. Wadler. A new array operation. In Workshop on Graph Reduction Techniques, Springer-Verlag LNCS, this volume, October 1986.

    Google Scholar 

  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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Joseph H. Fasel Robert M. Keller

Rights and permissions

Reprints 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

Publish with us

Policies and ethics