У меня есть сложная программа, часть которой выглядит примерно так:
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).
С этим проблема исчезла (или, по крайней мере, она появляется только в гораздо более крупных списках).Тем не менее, я понятия не имею, почему.Что так отличается в двух версиях?Разве оба не должны быть одинаковыми?