我是Prolog的新手并遇到了这个谓词select/3
.我想它是如何工作的,虽然我不确定我将如何自己实现它.我想是这样的:
selec(El,[El|T],T). selec(El,[H|T],[H|S]) :- selec(El,T,S). select(El,[],[]).
我知道有些事情是错的.我的解决方案只删除第一次出现.我希望它删除,在某些时候发生的所有事件,就像select/3
那样.有任何想法吗?
你的代码非常好,除了你不需要select(El,[],[]).
谓词.
这就是你所需要的:
selec(El,[El|T],T). selec(El,[H|T],[H|S]) :- selec(El,T,S).
请记住,标准的prolog参数顺序是输入,后跟输出,所以你真的应该像这样写:
selec([El|T],El,T). selec([H|T],El,[H|S]) :- selec(T,El,S).