kprolog K-Prolog Compiler Version 6.0

eval算術関数


算術関数eval/1は、引数と関連する述語を呼び出し、その結果を値とします。
この関数は実験的に実装されており、インタープリタで動作します。コンパイルしようとするとコンパイル時にエラーとなります。

評価の方法

eval/1は、引数である複合項またはアトムに1つの引数を追加し、その項を決定的に実行し、追加した引数の値をeval/1の値とします。eval/1の引数の中に現れる項は、術語に引き渡されるときに算術関数をして評価されず、項として渡されます。
eval(foo(1+2,abc)) ⇒ foo(1+2,abc,X) を生成する。
Z is eval(foo(1+2,abc)) は、foo(1+2,abc,_)を実行し、成功すれば最後の引数の値がZと単一化される。
、 上記の例で、foo/3が未定義であったり失敗したり結果が数でない場合には、実行時にtype_errorとなります。

現在の実装は、算術演算と述語の間で数多くのネストが発生することを想定していません。数回のネストに耐えるようにしております。


一つ上に戻る 目次に戻る