我在理解prolog中的概念时遇到了困难。从Prolog中的列表创建子列表
我有一个序言名单:
MyList = [item(dog,red), item(cat,black), item(rat,gray)]
,我希望创建一个列表的只是颜色,即 [red,black,gray]
目前我已经试过的解决方案是:
getlistcolors([item(_,C)|T], Result) :-
getlistcolors(T,Result),
append([C],Result,Result).
getlistcolors([],_).
我希望能够调用该功能:
?- getlistcolors(MyList, Result).
Result = [red,black,gray]
任何帮助表示赞赏。
感谢
'setof(Color,member(item(_,Color),MyList),ColorList).'将给出唯一的排序颜色列表。如果你想字面上的颜色,包括任何重复,'findall(Color,member(item(_,Color),MyList),ColorList)。“ – lurker