いくつかのリスト(メニュー)を1つずつ返す述語「lookupOptions」があります。
複数入力の場合に対応できるようにしようとしています。「list_places」リストの先頭を読み取ることで、次のように1セットのオプションを返すことができます。
find_options(Restaurant,Town,Menu) :- lookupOptions(Restaurant,H,Menu), list_places(Town,[H|T])
しかし、私はそれを繰り返すことができません。
私はたくさんのことを試みました、これらはこれまでの私の最善の努力でした。
a)十分に標準的な反復ですが、解決されません...
doStuff(X,[],_).
doStuff(Restaurant,[H|T],_):- lookupOptions(Resturant,H,_), doStuff(Restaurant,T,_).
find_options(Restaurant,Town,Menu) :- doStuff(Restaurant,[H|T],Menu), list_places(Town,[H|T]).
b)目標述語を拡張する..。
find_options(_,Town,[H|T],_)
find_options(Restaurant,Town,Menu) :- find_options(Restaurant,Town,[],Menu).
find_options(Restaurant,Town,X,Menu) :- list_places(Town,X).
find_options(Restaurant,Town,[H|T],Menu) :- lookupOptions(Restaurant,[H],Menu), find_options(Restaurant,Town,T,Menu).
これらのどちらかが機能しますか?パターンが正しく書かれている場合。または、適切なカットが行われた場合はどうなりますか?
最も感謝している助けは...