Id (programming language)
# 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:

Types are inferred by default, but may be annotated with a typeof declaration. Type variables use the syntax *0, *1, etc.

A function which uses an array comprehension to compute the first $n$ Fibonacci numbers:

Note the use of non-strict evaluation in the recursive definition of the array A.

Id's lenient evaluation strategy allows cyclic datastructures by default. The following code makes a cyclic list, using the cons operator :.

However, to avoid nonterminating construction of truly infinite structures, explicit delays must be annotated using #:

## Implementations

### pHluid

    The pHluid system was a research implementation of Id programming language, with future plans for a front-end for pH, a parallel dialect of the Haskell programming language, implemented at Digital's Cambridge Research Laboratory. and non-profit use. It is targeted at standard Unix workstation hardware.
