Представьте, что у меня есть следующая база знаний, которая дает каждому человеку свое имя и возраст.Пролог. В запросе, как поставить условие на переменную, которую я не хочу в результатах?
person(mary, 39).
person(john, 24).
person(sandy, 17).
Теперь я хочу получить всех лиц старше 20 лет. Кроме того, я просто хочу собрать их имена, а не их возраст. Здесь я хочу получить mary
и john
.
Как это сделать обычно в Prolog и более конкретно в SWI-Prolog?
Если мы будем использовать переменную, которая не является анонимным, как:
?- person(X, Y), Y > 20.
Пролог даст мне значения для обоих X
и Y
, и я не хочу Y
.
Я не могу использовать анонимную переменную _
, потому что Prolog не может связывать свои два экземпляра. Вывод следующего сообщения:
?- person(X, _), _ > 20.
Итак, как это сделать?
Спасибо за эти 2 решения. У первого есть недостаток, который я должен изменить в своей базе знаний. Второй - это действительно тот ответ, который я искал. –