如果情况为否,则采用序言

时间:2018-09-24 20:28:03

标签: if-statement prolog negation

我有一个复杂的程序,其中一部分看起来像这样:

check_list([]).
check_list([X|List]) :- (try_something(X) -> write(1);write(0)),nl,check_list(List).

问题是,当我的列表很大时,Prolog给我“资源错误:内存不足” 。我认为问题可能出在“如果-则-子句”中。所以我尝试了以下方法:

check_list([]).
check_list([X|List]) :- (\+try_something(X) -> write(0);write(1)),nl,check_list(List).

这样,问题就解决了(或者至少只有更大的列表才会出现)。但是,我不知道为什么。这两个版本有何不同?两者不应该都一样吗?

0 个答案:

没有答案