ignore / 1 вызывает единственный аргумент и завершается успешно всякий раз, когда он терпит неудачу или нет:

ужно выполнить домашнее задание, используя пролог (SWI-аромат), и я не могу разобраться с некоторыми вещами.

Например, если я хочу перебрать список и добавить его элементы в другой, но ТОЛЬКО если они удовлетворяют определенному условию, как бы мне поступить? Я могу добавить их все, или ни одного, но если я добавлю предложение, которое проверяет это условие, вся рекурсия оказывается «ложной». Я понимаю, почему это так, но понятия не имею, как это исправить. В основном то, что я хочу, это:

goal(Stuff) :- do_something(X),
               only_do_this_if_something(Y),
               always_do_this(Z).

В настоящее время, еслиonly_do_this_if_something(Y) не удается, такжеalways_do_this(Z) не происходит, поскольку вся цель становится ложной ...

Ответы на вопрос(1)

Ваш ответ на вопрос