【发布时间】:2013-09-27 01:52:21
【问题描述】:
我有一个问题,需要有人纠正我:
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).
当我咨询时,无论我输入什么类型的书,我都会返回 false。如何解决?
【问题讨论】:
-
尝试
store(_, _, Books)而不是store(_, [_], [Books])。[Books]只会匹配带有单个原子的列表,并用该单个原子实例化Books。而[_]也将只匹配具有单个原子而不是任何列表的列表。这两种情况都会导致与您的所有事实不匹配。 -
每次答案匹配时返回true。例如,对于故事书,“真实”答案出现 2 次span>