Irvine Dataflow (Id) is a general-purposeparallel programming language, started at the University of California at Irvine in 1975[1] byArvind and K. P. Gostelow.[2] Arvind continued work with Id atMIT into the 1990s.
The major subset of Id is apurely functional programming language withnon-strict semantics. Features include:higher-order functions, a Milner-style statically type-checked polymorphic type system with overloading, user defined types and pattern matching, and prefix and infix operators. It led to the development of pH, a parallel dialect ofHaskell.
Id programs are fine grainedimplicitly parallel.
The MVar synchronisation variable abstraction in Haskell is based on Id's M-structures.[3]
Id supportsalgebraic datatypes, similar to ML, Haskell, or Miranda:
type bool = False | True;
Types areinferred by default, but may be annotated with atypeof declaration. Type variables use the syntax*0,*1, etc.
typeof id = *0 -> *0;def id x = x;
A function which uses an array comprehension to compute the firstFibonacci numbers:
typeof fib_array = int -> (array int);def fib_array n = { A = { array (0,n) of | [0] = 0 | [1] = 1 | [i] = A[i-1] + A[i-2] || i <- 2 to n } In A };Note the use of non-strict evaluation in the recursive definition of the arrayA.
Id's lenient evaluation strategy allows cyclic datastructures by default. The following code makes a cyclic list, using the cons operator:.
def cycle x = { A = x : A In A };However, to avoid nonterminating construction of truly infinite structures, explicit delays must be annotated using#:
def count_up_from x = x :# count_up_from (x + 1);
Thisprogramming-language-related article is astub. You can help Wikipedia byadding missing information. |