現在の閲覧者数:

member(X,L).

要素 X は、リスト L に存在するか?

♪ プログラムコード code

love:uema% cat member.pl
% member.pl
member_1( A, [A|_] ).
member_1( A, [_|L] ) :-
	member_1( A, L ).


member_2(A,[B|R]) :- \+(var(A)),ground([B|R]),A = B,!.
member_2(A,[A|_]).
member_2(A,[_|R]) :- member_2(A,R).
love:uema%

実行例

love:uema% swipl -q -s member.pl
?- member_1( a, [a,b,c] ).
true ;
false.

?- member_1( b, [a,b,c] ).
true ;
false.

?- member_1( c, [a,b,c] ).
true ;
false.

?- member_2( a, [a,b,c] ).
true.

?- member_2( b, [a,b,c] ).
true.

?- member_2( c, [a,b,c] ).
true.

?- member_1( a, [A,B] ).
A = a ;
B = a ;
false.

?- member_2( a, [A,B] ).
A = a ;
B = a ;
false.

?-




?- member_1( a, [a,b,c] ).
true ;
false.

?- member_2( a, [a,b,c] ).
true.

?- 

上を見ると、member_1の方は、余計な false という表示が出ます。
member_2 の方がスマートな動きをします。
member_1 は、書籍に載っています。
member_2 は、尾崎さんが書きました。

inserted by FC2 system