与えられたパターンに従ってゴールの全解のリストをつくる。
findall/3は、
項の解を持つゴールと同じ数の、
具体化された項のリストによって項リストを単一化する。
もしゴールが成功しない場合は、項リストは空リストに単一化される。
項 項 ゴール ゴール 項リスト リスト
part_of(house, window). part_of(house, door). part_of(house, room). part_of(room, table). part_of(room, floor). part_of(floor, tile).contains(X, Y) :- part_of(X, Y). contains(X, Y) :- part_of(X, Z), contains(Z, Y).
?- findall(Element, contains(What, Element), List).
Element = _1 What = _2 List = [window,door,room,table,floor,tile,table,floor,tile,tile]
?- setof(Element, contains(house, truck), List)
Element = _1 What = _2 List = []
この述語は、ISO-Prolog標準に含まれる。
bagof/3 , setof/3 , collect/3.
| 冒頭へ |
|