我试图创建一个返回所有女性列表的谓词。到目前为止,我有:
female(elisabeth).
female(queenmother).
female(diana).
female(anne).
female(beatrice).
female(sarah).
female(zara).
female(kate).
the_royal_females([X|_]).
the_royal_females([X|_]) :- female(X).
但这会让每个女性都像个人一样回归
X = elisabeth ;
X = queenmother ;
X = diana ;
我怎样才能让它返回[elisabeth,queenmother,diana]
?
答案 0 :(得分:1)
您可以使用findall/3
:
the_royal_females(Lst):-findall(F,female(F),Lst).
findall
在尽可能满足Lst
的同时F
获得female(F)
所有实例化。