関数型言語ML(SML, OCaml, etc.), Part 4
■ このスレッドは過去ログ倉庫に格納されています
0267デフォルトの名無しさん
2006/03/01(水) 12:12:12select の部分は、[...] のリストの中に有るイベントの内、最初に発生した
イベントを選んで実行せよ、という意味。アトミックという言葉が適切かどう
か判りませんが、他のイベントは破棄されるという意味で排他的です。
send getCh ... は、getCh というチャネルに x を送信するイベントですが、
受け取る相手が確定するまで待つイベント。
wrap (send getCh...) (fun () ...) は、(send getCh...) イベントが発生し
たらその後に、(fun () -> ...) を実行せよというイベント。
receive putCh は、putCh というチャネルからデータを得るイベント。もちろ
ん putCh にデータが流れてくるまで待ちます。
wrap (receive putCh) loop は、(receive ..) イベントが発生したらその後
に、受け取ったデータを loop に渡して loop を実行せよというイベント。受
け取ったデータはループを回りながら保持されているので、破壊的代入は一切
行われません。
ちなみに、イベントが発生した後に特定の関数を呼び出すのが、wrap。イベン
トが発生する前に特定の関数を呼び出すのが guard です。
■ このスレッドは過去ログ倉庫に格納されています