next up previous contents
Next: 3.4 出力ストリーム Up: 3 差分リストの使い方 Previous: 3.2 差分リスト

3.3 ショートサーキット

差分リストは, 結果を出力するための有力な方法だが, 出力された結果が全て求ま ったことは, 結果が求まったタイミングを得ることができる方法であると言える. すなわち, 差分リストの考え方は(結果を見たいのではなく, )処理終了のタイミ ングを得たい時にも応用が効く. 各ゴールは, ある(通常, 処理が終了した)タイミングで差分リストの2引数を閉じる ように(単一化)すれば, 外から差分リストの先頭を参照しているゴールが, 差分リストの終端 が見えることで, すべてのゴールの処理が終了したタイミング得ることができる.

 
図 3.7: ショートサーキット

プログラムでは, 下記のようにして監視ゴールが, 仕事の終了のタイミングを つかむ.

  job :- inspector(C0),
        worker1( ...    ,C0,C1),
        worker2( ...    ,C1,C2),
        .
        .
        workerN( ...    ,CN,[]).

  inspector(W) :- wait(X) | next_job.

こうして, 差分リストのようにゴール間に2引数を付加してタイミングを得るための 技法を ショートサーキットと呼ぶ.



next up previous contents
Next: 3.4 出力ストリーム Up: 3 差分リストの使い方 Previous: 3.2 差分リスト



KLIC