From 814ce2d672d95d0ec0d323fe072c28eddae3faa8 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Wed, 12 Jul 2023 07:26:52 +0200 Subject: [PATCH] ENHANCED: improved determinism of member/2 Example: ?- member(X, "abc"). %@ X = a %@ ; X = b %@ ; X = c. This addresses #750. --- src/lib/lists.pl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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). % -- 2.54.0