Contents
Id (programming language)
Irvine Dataflow (Id) is a general-purpose parallel programming language, started at the University of California at Irvine in 1975 by Arvind and K. P. Gostelow. Arvind continued work with Id at MIT into the 1990s. The major subset of Id is a purely functional programming language with non-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 of Haskell. Id programs are fine grained implicitly parallel. The MVar synchronisation variable abstraction in Haskell is based on Id's M-structures.
Examples
Id supports algebraic datatypes, similar to ML, Haskell, or Miranda: type bool = False | True; Types are inferred by default, but may be annotated with a declaration. Type variables use the syntax, , etc. typeof id = *0 -> *0; def id x = x; A function which uses an array comprehension to compute the first n Fibonacci 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 array. 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);
Implementations
This article is derived from Wikipedia and licensed under CC BY-SA 4.0. View the original article.
Wikipedia® is a registered trademark of the
Wikimedia Foundation, Inc.
Bliptext is not
affiliated with or endorsed by Wikipedia or the
Wikimedia Foundation.