【发布时间】:2019-11-29 00:00:24
【问题描述】:
我想写一个函数来写一个列表,例如下面的代码
喜欢('约翰','足球')
喜欢('玛丽','足球')
喜欢('eric', '足球')
所以我想写的函数是这样的
whoLikes('soccer', list)
列表将是 ('john', 'eric')
我应该使用递归来做到这一点吗?怎么样?
【问题讨论】:
我想写一个函数来写一个列表,例如下面的代码
喜欢('约翰','足球')
喜欢('玛丽','足球')
喜欢('eric', '足球')
所以我想写的函数是这样的
whoLikes('soccer', list)
列表将是 ('john', 'eric')
我应该使用递归来做到这一点吗?怎么样?
【问题讨论】:
使用可以使用内置谓词setof/3:
likes(messi,soccer).
likes(ronaldo,soccer).
likes(jordan,basketball).
whoLikesSoccer(F):- setof(X,likes(X,soccer),F).
输出
?- whoLikesSoccer(X).
X=[messi,ronaldo].
false
【讨论】: