【发布时间】:2018-11-05 16:42:00
【问题描述】:
如何在 Prolog 中返回列表列表的所有元素:
这是我的代码:
treturn_list_members([[Head|_]|Lists], Head).
treturn_list_members([[_|T]|Lists], Head):- return_list_members([T|Lists], Head).
当我执行时,它只返回第一个列表的元素。
?- treturn_list_members([[12,3],[45,6],[11,90]],L).
L = 12 ;
L = 3 ;
false.
【问题讨论】:
-
这是 Prolog,所以定义成为会员意味着什么。不要将其视为“返回成员列表”。相反,定义成为会员意味着什么。以下情况之一为真:
is_a_member(E, [List|Lists]) :- member(E, List).或is_a_member(E, [_|Lists]) :- is_a_member(E, Lists).如果您不允许使用member/2,请自行选择,因为它相当简单。