简体   繁体   English

为谓词even_member定义成员和构造子句的子句

[英]clauses defining member and construct clauses for a predicate even_member

i done my prolog coding and no error when run it. 我完成了序言编码,运行时没有错误。 but still cannot get the output i want. 但仍然无法获得我想要的输出。 so i want to ask where is the problem. 所以我想问问题出在哪里。 my coding is like bellow 我的编码就像下面

even_member(X, [X|_]).

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

the output i need it is when key in even_member(2,[1,2,3,4,5,6]). 我需要的输出是在Even_member(2,[1,2,3,4,5,6])中键入时。 will get output like bellow 会得到类似波纹管的输出

X=2 X = 2

X=4 X = 4

X=6 X = 6

yes

Can anyone help me tell me what's the problem for my coding. 谁能帮我告诉我编码的问题是什么。 Thank you. 谢谢。

I can suggest: 我可以建议:

even_member(X, List) :-
    member(X, List),
    0 is X mod 2.

Which, when evaluating, gives: 评估时得出:

?- even_member(X,[1,2,3,4,5,6]).
X = 2 ;
X = 4 ;
X = 6 ;
false.

Otherwise, if you wanted behaviour that simply just prints all the values out in one go, you can try: 否则,如果您想要只将所有值一口气打印出来的行为,则可以尝试:

even_member(List) :-
    member(X, List),
    0 is X mod 2,
    write(X), nl,
    fail ; true.

Which, when evaluating, we get: 在评估时,我们得到:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM