(==)/2
は評価されたものと比較します。それはその議論を評価しない。引数がすでに一致する用語にインスタンス化されている場合にのみ成功します。 Prologで
、not(not(true))
自体が引数を持たない用語true/0
からなる1つの引数の用語not/1
され、単一の引数、not(true)
を持つ用語not/1
である化合物の用語です。それは価値がありません。特定の状況を除いて「実行」さえしません。 Prologでは、引数が失敗すると述語not/1
が成功し、引数が成功すると失敗します。これは値または機能結果ではありませんが、動作です。これは、それが次のような状況に表示されていることを想定している。
not(not(true)),
write('This will be written out because not(not(true)) succeeded'), nl.
プロローグにおける発現true == not(not(true))
はに等しい化合物の用語であり、この文脈において
'=='(true, not(not(true)))
、not(not(true))
は評価されません。 Prologは最初に(==)/2
同値演算子を実行します。引数は同じ項にインスタンス化されると成功します。 Prologの用語true
とnot(not(true))
は同じ(または同等のもの)ですか?いいえそうではありません。 1つは引数のない簡単な用語です(true/0
)。もう一つは複合用語である:1つの引数を持つ用語そのものが1つの引数を持つ用語。したがって、(==)/2
はここで失敗します。
(=:=)/2
は全く異なっています。算術式の結果を比較する演算子です。引数は評価可能な算術式でなければならず、同じ結果に評価すると(=:=)/2
は成功し、そうでない場合は失敗します。
ある場所で 'not(not(false))'を使用し、他の場所で 'not(not(true)) 'を使用しました。それは慎重だったのか? – user2357112
いいえ、タイプミスです。 Sry。修正しました。 – daniel451