<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Id_%28programming_language%29</id>
	<title>Id (programming language) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Id_%28programming_language%29"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Id_(programming_language)&amp;action=history"/>
	<updated>2026-05-15T17:11:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Id_(programming_language)&amp;diff=6058818&amp;oldid=prev</id>
		<title>imported&gt;Comp.arch: Was a typo, also adding &quot;(preliminary)&quot; to title, since what I found, and link for it. Possibly there&#039;s a later publication without it.</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Id_(programming_language)&amp;diff=6058818&amp;oldid=prev"/>
		<updated>2023-03-14T09:40:54Z</updated>

		<summary type="html">&lt;p&gt;Was a typo, also adding &amp;quot;(preliminary)&amp;quot; to title, since what I found, and link for it. Possibly there&amp;#039;s a later publication without it.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{other uses of|ID}}&lt;br /&gt;
Irvine Dataflow (&amp;#039;&amp;#039;&amp;#039;Id&amp;#039;&amp;#039;&amp;#039;) is a general-purpose [[parallel programming language]], started at the University of California at Irvine in 1975&amp;lt;ref name=&amp;quot;google&amp;quot;&amp;gt;{{cite book|title=Data Flow Computing: Theory and Practice|author=Sharp, J.A.|date=1992|publisher=Intellect, Limited|isbn=9780893919214|url=https://books.google.com/books?id=dS4b3i36qsEC|page=125|access-date=2014-12-02}}&amp;lt;/ref&amp;gt; by [[Arvind (computer scientist)|Arvind]] and K. P. Gostelow.&amp;lt;ref&amp;gt;{{Cite journal |last=Arvind |last2=Gostelow |first2=Kim P. |last3=Plouffe |first3=Wil |date=1978 &amp;lt;!-- May, revised in Sep, and link tool, suggest that later date to be used: 1978-09-18 --&amp;gt; |title=The (preliminary) Id report: an asynchronous programming language and computing machine (revised) |url=https://escholarship.org/uc/item/0rr7573w |language=en |journal=Technical Report TR-114, Department of Information and Computer Science, University of California, Irvine}}&amp;lt;/ref&amp;gt; Arvind continued work with Id at [[MIT]] into the 1990s.&lt;br /&gt;
&lt;br /&gt;
The major subset of Id is a [[purely functional programming language]] with [[non-strict semantics]]. Features include: [[higher-order function]]s, 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 (programming language)|Haskell]].&lt;br /&gt;
&lt;br /&gt;
Id programs are fine grained [[implicitly parallel]].&lt;br /&gt;
&lt;br /&gt;
The MVar synchronisation variable abstraction in Haskell is based on Id&amp;#039;s M-structures.&amp;lt;ref&amp;gt;&amp;quot;Concurrent Haskell&amp;quot;. Peyton-Jones, Gordon and Finne. POPL 1996.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Id supports [[algebraic datatype]]s, similar to ML, Haskell, or Miranda:&lt;br /&gt;
&lt;br /&gt;
 type bool = False | True;&lt;br /&gt;
&lt;br /&gt;
Types are [[type inference|inferred]] by default, but may be annotated with a &amp;lt;code&amp;gt;typeof&amp;lt;/code&amp;gt; declaration. Type variables use the syntax &amp;lt;code&amp;gt;*0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*1&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&lt;br /&gt;
 typeof id = *0 -&amp;gt; *0;&lt;br /&gt;
 def id x = x;&lt;br /&gt;
&lt;br /&gt;
A function which uses an array comprehension to compute the first &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; [[Fibonacci numbers]]:&lt;br /&gt;
&lt;br /&gt;
 typeof fib_array = int -&amp;gt; (array int);&lt;br /&gt;
 def fib_array n =&lt;br /&gt;
   { A = { array (0,n) of&lt;br /&gt;
         | [0] = 0&lt;br /&gt;
         | [1] = 1&lt;br /&gt;
         | [i] = A[i-1] + A[i-2] || i &amp;lt;- 2 to n }&lt;br /&gt;
   In A };&lt;br /&gt;
&lt;br /&gt;
Note the use of non-strict evaluation in the recursive definition of the array &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Id&amp;#039;s lenient evaluation strategy allows cyclic datastructures by default. The following code makes a cyclic list, using the cons operator &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 def cycle x = { A = x : A In A };&lt;br /&gt;
&lt;br /&gt;
However, to avoid nonterminating construction of truly infinite structures, explicit delays must be annotated using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 def count_up_from x = x :# count_up_from (x + 1);&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
;pHluid&lt;br /&gt;
: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&amp;#039;s Cambridge Research Laboratory. and non-profit use. It is targeted at standard Unix workstation hardware.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.4920 ID Language Reference Manual], Rishiyur S. Nikhil, 1991.&lt;br /&gt;
*&amp;quot;An Asynchronous Programming Language for a Large Multiprocessor Machine&amp;quot;, Arvind et al., TR114a, Dept ISC, UC Irvine, Dec 1978&lt;br /&gt;
&lt;br /&gt;
[[Category:Functional languages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{compu-lang-stub}}&lt;/div&gt;</summary>
		<author><name>imported&gt;Comp.arch</name></author>
	</entry>
</feed>