memberlists(X, Xss) :-
member(Xs, Xss),
member(X, Xs).
如同member/2
,这会产生许多冗余答案,例如:
?- memberlists(X, [[a,a],[a],[a]]).
X = a
; X = a % redundant
; X = a % redundant
; X = a. % redundant
或者,您可能想使用memberd/2 https://stackoverflow.com/a/21971885代替member/2
.
memberlists2(X, Xss) :-
memberd(Xs, Xss),
memberd(X, Xs).
?- memberlists2(X, [[a,a],[a],[a]]).
X = a
; X = a % redundant
; false.
这好多了,但仍然没有删除所有多余的答案。
对于消除所有此类冗余的解决方案,已经设置了赏金。