是否可以使用撤回的返回值?
我只想创建打印单词的函数,而不是布尔值, 所以我尝试比较收回价值来打印声明,但似乎没有用。
答案 0 :(得分:0)
谓词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('...')
,这总是成功。
之后,削减,所以我们不能回溯到第二个条款。
%:- assert(a).
test :-
retract(a),
writeln('a used to be true, but not any more.'), !.
test :-
writeln('a was false').
在这个示例中,assert(a)
被注释掉,retract(a)
失败,所以我们到达test/0
的第二个子句,通过编写&#34成功; a是假的& #34;