У меня есть вопрос, и нужен кто-то исправить меня:Прологе список манипуляция
store(wyoming, [evan, sandra], [storybook, fiction, general]).
store(brooklyn, [haas, maria], [fiction, schoolbook, religion]).
store(oakland, [rich, walker, dina, vince], [storybook, schoolbook, fiction]).
если я консультируйтесь ?-locations(storybook).
ответ должен вернуться так, потому что сборник рассказов доступны более чем в одном магазине. Я пишу свой предикат следующим образом:
locations(Book) :- store(_, [_], [Books]), member(Book, Books).
, когда я консультируюсь, я верну ложь, независимо от того, в какую именно книгу я вхожу. как это решить?
Попробуйте 'store (_, _, Books)' вместо 'store (_, [_], [Books])'. '[Books]' будет соответствовать только списку с одним атомом и создавать экземпляры 'Books' с этим единственным атомом. И '[_]' также будет соответствовать списку только с одним атомом, а не с любым списком. Оба они вызовут неправильную совпадение со всеми вашими фактами. – lurker
возвращает true каждый раз, когда отвечает ответ. например, для сборников рассказов «истинный» ответ появляется 2 раза – Man