Lazy evaluation and the logic variable
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Multithreading: a revisionist view of dataflow architectures
ISCA '91 Proceedings of the 18th annual international symposium on Computer architecture
How much non-strictness do lenient programs require?
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Evaluation of Various Node Configurations for Fine-grain Multithreading on Stock Processors
HPC-ASIA '97 Proceedings of the High-Performance Computing on the Information Superhighway, HPC-Asia '97
Hi-index | 0.00 |
It is difficult simulteneously to achieve elegance, efficiency and parallelism 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 and arrays using Update (both fine-grained operators), and arrays using make-array (a ``bulk'''' operator). We then present I-structures as an alternative, defining precisely the parallel operational semantics of Id, a language with I-structures. We show elegant, efficient and parallel solutions for the program examples in Id. I-structures make the language non-functional, but do not raise determinancy issues. Finally, we show that even in the context of purely functional languages, I-structures are invaluable for implementing functional data abstractions.