Пролог если потом с отрицательным условием - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть сложная программа, часть которой выглядит примерно так:

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

Проблема в том, что, когда мой список становится очень большим, Пролог дает мне "Ошибка ресурса: недостаточнопамять ".Я думал, что проблема может быть где-то в предложении if-then-Поэтому я попробовал следующее:

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

С этим проблема исчезла (или, по крайней мере, она появляется только в гораздо более крупных списках).Тем не менее, я понятия не имею, почему.Что так отличается в двух версиях?Разве оба не должны быть одинаковыми?

...