Пролог запрос, который проверяет список
Я довольно плохо знаком с прологом и, изучая его, наткнулся на проблему, которая у меня возникла. У меня есть несколько фактов в базе данных. Они есть:
book(year(1937), title([of,mice,and,men]), rating_out_of_ten(9)).
book(year(2008), title([the,hunger,games]), rating_out_of_ten(8)).
Я пытаюсь запросить книги, в названии которых есть слово "of". Это то, что я пытался:
book(year, title, rating_out_of_ten), member(of, title).
Это возвращает ложь, когда я делаю это. Может кто-нибудь, пожалуйста, помогите. Заранее спасибо.
2 ответа
Так что я новичок в прологе, но я думаю, что знаю решение:
В вашем запросе вы на самом деле используете неверный предикат, он должен быть "книга", а не "фильм"
Запрос должен выглядеть так:
book(X,title(Y),Z), member(of,Y)
,
Аргументы должны быть написаны заглавными буквами (они должны быть переменными), однако, чтобы достичь элементов списка, вы должны использовать имя списка, а затем переменную, например:
title(Y)
так что вы можете использовать "Y" в предикате члена.
Помните, что имена переменных должны начинаться с заглавной буквы (или подчеркивания). Кроме того, вы действительно запрашиваете movie
когда ваши факты book
?
Вы можете попробовать:
?- book(year(Y), title(T), rating_out_of_ten(R)), member(of, T).