ACM Transactions on Programming Languages and Systems · 1989 · 363 citations · 18 references
ComputingComputer ScienceData StructuresParallel ComputingProgramming LanguagesData ParallelismData Structure DesignData-flow AnalysisFunctional ProgrammingParallel ComputationParallel Data StructuresFunctional Data StructuresFunctional Parallel ProgrammingOperational SemanticsParallel Program SemanticsParallel ReductionParallel Reduction AlgorithmsParallel SystemStructural Operational Semantics
It is difficult to achieve elegance, efficiency, and parallelism simultaneously in functional programs that manipulate large data structures. We demonstrate this through careful analysis of program examples using three common functional data-structuring approaches-lists using Cons, arrays using Update (both fine-grained operators), and arrays using make-array (a “bulk” operator). We then present I-structure as an alternative and show elegant, efficient, and parallel solutions for the program examples in Id, a language with I-structures. The parallelism in Id is made precise by means of an operational semantics for Id as a parallel reduction system. I-structures make the language nonfunctional, but do not lose determinacy. Finally, we show that even in the context of purely functional languages, I-structures are invaluable for implementing functional data abstractions.
18
The implementation of functional programming languages
Microprocessors and Microsystems · 1987 · 1.1K citations
Making data structures persistent
James R. Driscoll, Neil Sarnak, Daniel D. Sleator et al. · 1986 · 704 citations
Dependence graphs and compiler optimizations
David J. Kuck, Robert H. Kuhn, David Padua et al. · 1981 · 652 citations · Full text
Arvind Arvind, David Culler · Annual Review of Computer Science · 1986 · 256 citations · Full text