From: Markus Triska Date: Wed, 12 Jul 2023 05:26:52 +0000 (+0200) Subject: ENHANCED: improved determinism of member/2 X-Git-Tag: v0.9.2~64^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=refs%2Fheads%2Flookahead_indexing;p=scryer-prolog.git ENHANCED: improved determinism of member/2 Example: ?- member(X, "abc"). %@ X = a %@ ; X = b %@ ; X = c. This addresses #750. --- diff --git a/src/lib/lists.pl b/src/lib/lists.pl index 815e2b2a..8a94ed6a 100644 --- a/src/lib/lists.pl +++ b/src/lib/lists.pl @@ -122,8 +122,13 @@ length_addendum([_|Xs], N, M) :- % X = h % ; ... . % ``` -member(X, [X|_]). -member(X, [_|Xs]) :- member(X, Xs). + +member(X, [L|Ls]) :- + member_(Ls, L, X). + +member_(_, X, X). +member_([L|Ls], _, X) :- + member_(Ls, L, X). %% select(X, Xs0, Xs1). %