我有一个复杂的术语列表,它们具有相同的仿函数和arity,但有不同的参数。像这样:
Elements = [element(a, 1), element(b,2), element(c,3)]
从中我想生成一个新列表,其中只包含列表中每个复杂术语的第二个参数,如下所示:
Numbers = [1,2,3]
有没有办法设计谓词来解决任何长度的输入列表中的这个问题?
答案 0 :(得分:1)
Timofey对findall/3
的回答:findall(X,member(element(_,X), Elements),Numbers).
带有递归谓词的解决方案:
element_indexes([], []).
element_indexes([element(_,N)|Es],[N|Ns]) :-
element_indexes(Es, Ns).