从复杂术语列表中获取数字列表

时间:2013-11-22 21:13:19

标签: prolog

我有一个复杂的术语列表,它们具有相同的仿函数和arity,但有不同的参数。像这样:

Elements = [element(a, 1), element(b,2), element(c,3)]

从中我想生成一个新列表,其中只包含列表中每个复杂术语的第二个参数,如下所示:

Numbers = [1,2,3]

有没有办法设计谓词来解决任何长度的输入列表中的这个问题?

1 个答案:

答案 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).