返回列表:Prolog

时间:2014-12-08 21:36:25

标签: list prolog

我试图创建一个返回所有女性列表的谓词。到目前为止,我有:

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]

1 个答案:

答案 0 :(得分:1)

您可以使用findall/3

the_royal_females(Lst):-findall(F,female(F),Lst).

findall在尽可能满足Lst的同时F获得female(F)所有实例化。