| 与えられたパターンに従ってゴールの全解のリストをつくる。
findall(+項, +ゴール, ?項リスト)
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.
|