簡體   English   中英

為謂詞even_member定義成員和構造子句的子句

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

我完成了序言編碼,運行時沒有錯誤。 但仍然無法獲得我想要的輸出。 所以我想問問題出在哪里。 我的編碼就像下面

even_member(X, [X|_]).

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

我需要的輸出是在Even_member(2,[1,2,3,4,5,6])中鍵入時。 會得到類似波紋管的輸出

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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM