retractの戻り値を使用することはできますか?プロローグでブール値を引っ込める方法は?
ブール値の代わりに、 の代わりに単語を出力する関数を作成したいので、リトラクト値を比較してステートメントを出力しようとしましたが、動作していないようです。
retractの戻り値を使用することはできますか?プロローグでブール値を引っ込める方法は?
ブール値の代わりに、 の代わりに単語を出力する関数を作成したいので、リトラクト値を比較してステートメントを出力しようとしましたが、動作していないようです。
述語retract/1
は、他の述語と同様に成功または失敗することができます。上記の例で
:- assert(a).
test :-
retract(a),
writeln('a used to be true, but not any more.'), !.
test :-
writeln('a was false').
test.
を評価する場合、retract(a)
は成功し、そうwriteln('...')
は常に成功した、評価されます。
その後、カットされるので、2番目の節に戻ることはできません。 assert(a)
この例では
%:- assert(a).
test :-
retract(a),
writeln('a used to be true, but not any more.'), !.
test :-
writeln('a was false').
retract(a)
が失敗し、コメントアウトされているので、私たちは「偽だった」書き込むことで成功する
test/0
の第二節、に着きます。
あなたは何をしようとしているのですか? – SQB
あなたのコードを表示してください。何をしようとしていますか? – lurker