我有一個問題,需要有人糾正我:Prolog的列表操作
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).
答案必須返回true,因爲故事書,可在多個商店。我寫這樣的謂詞:
locations(Book) :- store(_, [_], [Books]), member(Book, Books).
當我諮詢時,無論我輸入什麼類型的書,我都會返回false。如何解決這個問題?
嘗試'store(_,_,Books)'而不是'store(_,[_],[Books])''。 '[書籍]'只會與一個原子匹配一個列表,並用這個原子實例化'Books'。並且'[_]'也將只與單個原子而不是任何列表匹配。這兩者都會導致與您的所有事實不匹配。 – lurker
每當答案匹配時它都會返回true。例如,對於故事書,「真實」答案出現2次 – Man