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 and arrays using Update (both fine-grained operators), and arrays using make array (a "bulk" operator). We then present I-structures 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 determ...
In this paper we illustrate, using the Id language, that both the operational semantics of a languag...
Choosing a suitable data structure is hard in sequential applications and harder in parallel applica...
. Most data-parallel languages use arrays to support parallelism. This regular data structure allows...
It is difficult simulteneously to achieve elegance, efficiency and parallelism in functional progra...
AbstractLinear lists, which are the standard data structure in functional programming languages, hav...
Abstraction in computer programming provides a means of reducing complexity by emphasising the signi...
We discuss a translation methodology for transforming a high level algorithmic specification written...
AbstractA framework is presented for designing parallel programming languages whose semantics is fun...
A new model of list processing is proposed which is more suitable as a basic data structure for arch...
This paper explores the use of the i* language as a notation to describe data structures to be used ...
Pure functional programming language offer many advantages over impure languages. Unfortunately, the...
Abstract. Pure functional programming language offer many advan-tages over impure languages. Unfortu...
We propose a parallel specialized language that ensures portable and cost-predictable implementation...
Abstract. Parallel algorithms can be expressed more concisely in a functional programming style. Thi...
It has often been suggested that functional languages provide an excellent basis for programming par...
In this paper we illustrate, using the Id language, that both the operational semantics of a languag...
Choosing a suitable data structure is hard in sequential applications and harder in parallel applica...
. Most data-parallel languages use arrays to support parallelism. This regular data structure allows...
It is difficult simulteneously to achieve elegance, efficiency and parallelism in functional progra...
AbstractLinear lists, which are the standard data structure in functional programming languages, hav...
Abstraction in computer programming provides a means of reducing complexity by emphasising the signi...
We discuss a translation methodology for transforming a high level algorithmic specification written...
AbstractA framework is presented for designing parallel programming languages whose semantics is fun...
A new model of list processing is proposed which is more suitable as a basic data structure for arch...
This paper explores the use of the i* language as a notation to describe data structures to be used ...
Pure functional programming language offer many advantages over impure languages. Unfortunately, the...
Abstract. Pure functional programming language offer many advan-tages over impure languages. Unfortu...
We propose a parallel specialized language that ensures portable and cost-predictable implementation...
Abstract. Parallel algorithms can be expressed more concisely in a functional programming style. Thi...
It has often been suggested that functional languages provide an excellent basis for programming par...
In this paper we illustrate, using the Id language, that both the operational semantics of a languag...
Choosing a suitable data structure is hard in sequential applications and harder in parallel applica...
. Most data-parallel languages use arrays to support parallelism. This regular data structure allows...