0
私は、次のルールがある場合:なぜ停止しないのですか?
test(X, Y, abc) :- X=='true' ; Y =='true'.
をし、私のようなクエリを作る:test(true, true, X).
なぜだろう、それを出力X = abc ?
倍?
| ?- test(true, true, X).
X = abc ? n
X = abc ? n
no
一度だけ回答してはいけませんか?
X == trueを見つけて停止しないでください.1つの条件だけが真の場合、条件全体が真だからです。
ルールが 'X == true'または' Y == true'の場合にtrueと表示されるため、 'test(true、true、abc)'が2回成功します。したがって、2つの異なる方法で成功します。 Prologはすべてのソリューションを表示します。 – lurker
... 'true 'の代わりに' true'を書くことができます – false