2016-11-20 5 views
0

swi-prologで以下のような関数を作ったとします。Prologプログラミングでは常に初期値を書きます

しかし

function1(param) :- VALUE is 0, findValue(VALUE), write(VALUE).

は必ずプリントアウトされます。 findValue関数は論理的に正しいです。 '

使用できませんfunction1で計算されたVALUE

答えて

0

注釈VALUE is 0

findValueは、最初に提供する主張が真実のものであり、残りはそれに対応するので、残りの変数をVALUEに設定します。例えば

、あなたがfunc(X).を照会した場合、それはあなたが割り当てをしたいと仮定しているため、それはX=0になります

func(X):- X is 0. 

を取ります。

しかし、func(0).のような番号を使用してクエリを実行すると、X==0かどうかがチェックされ、ブール型の回答が返されます。

+0

しかし、インタプリタはエラーメッセージを表示しました。 '引数が十分にインスタンス化されていません。 ' – newbie16

+0

' findValue'メソッドの問題はおそらくあなたが含んでいません。それを追加します。 – Uriel

関連する問題