如何在prolog中使用retract布尔值?

时间:2016-03-25 04:26:19

标签: prolog

是否可以使用撤回的返回值?

我只想创建打印单词的函数,而不是布尔值, 所以我尝试比较收回价值来打印声明,但似乎没有用。

1 个答案:

答案 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;