Я новичок в Prolog, и проблема, с которой я имею дело, заключается в следующем: учитывая список переменных, я хочу присвоить значение для каждого элемента этого списка, а затем проверить, ограничение, содержащее некоторые из этих переменных, истинно. Это пример того, как я думал, что это должно работать:Prolog присвоение значений элементам списка
predicate(L1, Restriction) :-
foreach(member(Var,L1), Var = 1),
Restriction.
Но когда я пишу в консоли:
? - predicate([A,B,C], A==1).
или
? - predicate([A,B,C], B==1).
или
? - predicate([A,B,C], A==B).
все они возвращают ложь.
Не должно быть A
, B
и C
быть эквивалентно 1 после цикла foreach?
Имейте в виду, что не существует понятие «присвоение» в прологе. Вместо этого он использует «унификацию». Это важное различие. – Enigmativity