我正在進行一項練習,藉此我試圖使用= ..謂詞編寫一個過程,該過程刪除列表中PredName(X)失敗的所有元素並返回其餘列表作爲結果:使用Prolog = ..謂詞
filter(List, PredName, Result)
在這種情況下與PredName被定義爲:
test(N) :- atom(N).
例如:
?- filter([a,b,-6,7,A,-1,0,B], test, L).
L = [a,b,-6,7,-1,0],
我有以下,但我不知道爲什麼我一直結果與上面的例子中進行測試時得到錯誤:
test(N):-
atomic(N).
filter([], _, []).
filter2([H|T], PredName, [H|S]):-
Goal =.. [PredName, H],Goal,filter(T, PredName, S),!.
filter([H|T], PredName, S) :-
filter2(T, PredName, S).
我從here得到了上面的代碼。
切割錯位。 – false
你從另一個答案中得到了代碼,但是你沒有閱讀我下面的評論。 – false