Irvine Dataflow(Id )は、汎用並列プログラミング言語であり、1975年にカリフォルニア大学アーバイン校でArvindとKP Gostelowによって開発されました。[2] Arvindは1990年代までMITでIdの開発を続けました。
Idの主要なサブセットは、非厳密なセマンティクスを持つ純粋関数型プログラミング言語です。高階関数、ミルナースタイルの静的型チェック付き多態型システム(オーバーロード機能付き)、ユーザー定義型とパターンマッチング、プレフィックス演算子とインフィックス演算子などの機能を備えています。これは、 Haskellの並列方言であるpHの開発につながりました。
Id プログラムは細粒度の暗黙的並列です。
HaskellのMVar同期変数抽象化はIdのM構造に基づいています。[ 3 ]
Id は、ML、Haskell、Miranda に似た 代数データ型をサポートしています。
bool 型 = False | True;
型はデフォルトで推論されますが、宣言によって注釈を付けることができます。型変数は、、などの typeof構文を使用します。*0*1
id のタイプ = *0 -> *0; 定義 id x = x;
配列の理解を使用して最初のフィボナッチ数を計算する関数:
typeof fib_array = int -> (配列 int); 定義fib_array n = { A = { 配列 (0,n) の | [0] = 0 | [1] = 1 | [i] = A[i-1] + A[i-2] || i <- 2 から n } A の場合 }; 配列の再帰定義では非厳密な評価が使用されていることに注意してくださいA。
Idの寛容な評価戦略は、デフォルトで循環的なデータ構造を許可します。次のコードは、cons演算子を使用して循環リストを作成します:。
定義サイクル x = { A = x : A In A }; ただし、真に無限の構造の非終了構築を回避するには、明示的な遅延を次のように注釈する必要があります#。
def count_up_from x = x :# count_up_from (x + 1);