Prolog 定义成员的子句和谓词偶数\成员的构造子句

Prolog 定义成员的子句和谓词偶数\成员的构造子句,prolog,Prolog,我完成了prolog编码,运行时没有错误。但仍然无法获得我想要的输出。所以我想问问题出在哪里。我的代码就像贝娄 even_member(X, [X|_]). even_member(X, [_|Tail]) :- 0 is X mod 2, write(X), nl, even_member(X, Tail). 我需要的输出是当输入偶数_成员(2、[1,2,3,4,5,6])时。将获得如下输出 even_member(X, [X|_]). even_member(X

我完成了prolog编码,运行时没有错误。但仍然无法获得我想要的输出。所以我想问问题出在哪里。我的代码就像贝娄

even_member(X, [X|_]).

even_member(X, [_|Tail]) :-
    0 is X mod 2,
    write(X), nl,
    even_member(X, Tail).
我需要的输出是当输入偶数_成员(2、[1,2,3,4,5,6])时。将获得如下输出

even_member(X, [X|_]).

even_member(X, [_|Tail]) :-
    0 is X mod 2,
    write(X), nl,
    even_member(X, Tail).
X=2

X=4

X=6

有谁能帮我告诉我编码有什么问题吗。谢谢。

我可以建议:

even_member(X, List) :-
    member(X, List),
    0 is X mod 2.
在评估时,给出:

?- even_member(X,[1,2,3,4,5,6]).
X = 2 ;
X = 4 ;
X = 6 ;
false.
否则,如果您想要一次打印出所有值的行为,您可以尝试:

even_member(List) :-
    member(X, List),
    0 is X mod 2,
    write(X), nl,
    fail ; true.
在评估时,我们得到:

?- even_member([1,2,3,4,5,6]).
2
4
6
true.
我可以建议:

even_member(X, List) :-
    member(X, List),
    0 is X mod 2.
在评估时,给出:

?- even_member(X,[1,2,3,4,5,6]).
X = 2 ;
X = 4 ;
X = 6 ;
false.
否则,如果您想要一次打印出所有值的行为,您可以尝试:

even_member(List) :-
    member(X, List),
    0 is X mod 2,
    write(X), nl,
    fail ; true.
在评估时,我们得到:

?- even_member([1,2,3,4,5,6]).
2
4
6
true.

在提出更多问题之前,你应该接受旧问题的答案。你的问题也没有多大意义。你是说
偶数成员(X[1,2,3,4,5,6])
而不是
偶数成员(2[1,2,3,4,5,6])
?在问更多问题之前,你应该接受旧问题的答案。你的问题也没有多大意义。你是说
偶数成员(X[1,2,3,4,5,6])
而不是
偶数成员(2[1,2,3,4,5,6])