Prolog:如何删除列表中的每个第二个元素

bal*_*ghi 4 list prolog

我需要在Prolog中编写一个程序,它应该删除列表中的每个第二个元素.应该这样工作:[1,2,3,4,5,6,7] - > [1,3,5,7]

到目前为止我有这个,但它只是返回"假".

r([], []). 
r([H|[T1|T]], R) :- del(T1,[H[T1|T]], R), r(R).

del(X,[X|L],L).
del(X,[Y|L],[Y|L1]):- del(X,L,L1).

pad*_*pad 7

这是Landei在特定Prolog语法中的答案:

r([], []).
r([X], [X]).
r([X,_|Xs], [X|Ys]) :- r(Xs, Ys).
Run Code Online (Sandbox Code Playgroud)

第二个谓词不是必需的.