3
12 ?- 3+4*5 = X+Y.
X = 3,
Y = 4*5.

13 ?- 3+4*5 = X*Y.
false.

16 ?- 3*4+5 = X*Y.
false.

私は期待していました

13 ?- 3+4*5 = X*Y.
X = 3+4, Y = 5.

16 ?- 3*4+5 = X*Y.
X = 3, Y = 4+5.

「優先順位」の問題はありますか?最新の swi-prolog リリースを使用しています。

4

2 に答える 2

3

はい、考慮する必要がある優先順位の問題があります。

Prolog は、定義された各演算子に優先順位の数値を付けて、その解析が自動的に処理できるようにします。

したがって、最初の例は期待どおりに機能しましたが、2 番目または 3 番目の例では機能しませんでした。用語を統一する方法がなかったため、Prolog は false を返しました。

于 2011-03-16T18:13:11.917 に答える
1

はい、それはそれについての何かです

各演算子には優先順位があります。+ の優先度は 500、* の優先度は 400

于 2011-03-16T18:12:21.850 に答える