next up previous contents
Next: 4.5.2 不要なノード評価を始めない方法 Up: 4.5 応用: 幅優先評価の実現 Previous: 4.5 応用: 幅優先評価の実現

4.5.1 すべてのノードを評価する方法

  
図 4.5: すべてのノードを評価するプログラム(naive.kl1)

  
図 4.6: naive.kl1 の実行トレース(eval/2のリダクション)

プログラム(naive.kl1)を図4.5に示す. eval/2は, 下につながるノードがあればeval/2をフォークし, フォークによって求まった2つの評価値から自ノードの評価値を決定する(5,6行目). 下につながるノードのない場合(自分がリーフの場合)は 評価値をすぐに返す(7,8行目). and_node/3及びor_node/3は2つの値のANDあるいはOR演算を行なう.

eval/2のリダクションの様子を図4.6に示す. このプログラムはすべてのノードを評価してしまうので 図にはすべてのノード(17ノード)が登場した.



next up previous contents
Next: 4.5.2 不要なノード評価を始めない方法 Up: 4.5 応用: 幅優先評価の実現 Previous: 4.5 応用: 幅優先評価の実現



KLIC