Есть ли противоположность оператору "подстановочный знак", чтобы специально не найти указанные элементы в Прологе?

Мне было трудно сформулировать название для этого вопроса, поэтому я постараюсь объяснить свою проблему как можно лучше здесь.

В Прологе вы можете использовать оператор _ в предикате для получения всех определений, независимо от того, что там существует, в моем примере:

%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, _).
Другие вопросы по тегам