GNU Prologで->
演算子を使用しようとしていますが、可変スコープに問題があります。ここでは例です:Prologのif/elseの可変スコープ
example(A) :-
B = A,
(B == 2 -> write(B), write(' is 2'), nl);
(write(B), write(' is not 2'), nl).
:
| ?- example(2).
2 is 2
true ?
yes
| ?- example(3).
_282 is not 2
yes
私はexample(2)
を照会すると、B == 2
は成功し、PrologはBの値が何であるかを知っているので、2 is 2
を出力します。
example(3)
を照会すると、B == 2
が失敗し、何らかの理由でPrologがBの値を知らないため、一部の変数_282
が出力されます。 B == 2
が成功したときにだけPrologがBの値を知っている理由について、私は非常に混乱しています。 ->
オペレータを正しく使用していませんか?どんな助けもありがとう。
ありがとう:あなたは直接
A
と作業することができます!あなたの最後の質問に答えるために、私の実際のコードはif/elseステートメントの前にはるかに多くの作業を行います。私は質問のためにすべてを単純化しました。 – applemavs