Есть ли противоположность оператору "подстановочный знак", чтобы специально не найти указанные элементы в Прологе?
Мне было трудно сформулировать название для этого вопроса, поэтому я постараюсь объяснить свою проблему как можно лучше здесь.
В Прологе вы можете использовать оператор _ в предикате для получения всех определений, независимо от того, что там существует, в моем примере:
%footballer is in the form: footballer(lastname,team,goals_scored)
%footballer(N,T,G).
footballer(rooney,manchesterutd,15).
footballer(ronaldo,madrid,20).
footballer(bale,madrid,17).
footballer(messi,barca,25).
и здесь, если бы я хотел найти всех игроков, которые играют за Мадрид, я мог бы использовать:
footballer(X,madrid,_).
и это вернуло бы игроков интереса, независимо от забитых голов.
Однако то, что я на самом деле хочу, это предопределенная команда Мадрид, все игроки, которые не являются членами Мадрида. Что-то вроде:
footballer(X,not(madrid),_).
Существует ли такая вещь? Я использую Prolog версии 5.10.2.
Спасибо
1 ответ
Вы хотите синтаксическое неравенство:
?- dif(T, madrid), footballer(X, T, _).