next up previous
Next: 要求駆動実行ゴールの決定 Up: 要求駆動スケジューリングによるKL1実装方式の研究 Previous: 単純な要求駆動型実行

KL1 と KLIC の拡張

KL1 で要求駆動ゴールを扱うためには, ある変数 X を具体化す るゴール Goal の評価を遅延し, X の具体値が必要になったとき に Goal を実行するという機構が必要である. このために, 以下の拡 張を行なった.

KL1 の拡張:
Goal@demand([X0,X1,...,Xn-1]) と いう形式のプラグマを追加し, X0,X1,...,Xn-1 のいずれか 1 つの 値が必要なときに Goal を実行することを指示する.
KL1 処理系の拡張:
X を通常の変数とは異なる特殊形式の変数 として Goal に関連付けておき, X が参照されたときに X は通常の変数に戻してから Goal を実行する.

この拡張により, ユーザはプラグマを付加して適切な要求駆動ゴールを指定で きるようになった. 要求駆動ゴールの呼び出しの様子を, 図 2 に示す.

要求駆動ゴールは, その出力データが必要なくなれば実行されない. これは 論理的には, まだ証明されていない定理を証明済であるとすることであり, 健全でない実行を許す非論理的な性質 である. しかし, KL1 では論 理的性質よりもデータの入出力関係に注目してプログラミングをすることが多 いため, 大きな問題とはならない. それ以上に, 余分な計算を省ける 可能性があることは大きな利点である.


図2 : 要求駆動ゴールの呼び出し



next up previous
Next: 要求駆動実行ゴールの決定 Up: 要求駆動スケジューリングによるKL1実装方式の研究 Previous: 単純な要求駆動型実行



www-admin@icot.or.jp