From: Markus Triska Date: Sun, 21 Aug 2022 11:51:12 +0000 (+0200) Subject: ENHANCED: Use '$skip_max_list'/4 for greater efficiency of nth0/3. X-Git-Tag: v0.9.1^2~31 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=7c5318b784c863d218cd9866f5155a288dcc404d;p=scryer-prolog.git ENHANCED: Use '$skip_max_list'/4 for greater efficiency of nth0/3. This is now possible due to 4c7e2eb8614da9c04f2286f6116b468017fb442c. See #1529 for the suggestion by @UWN. --- diff --git a/src/lib/lists.pl b/src/lib/lists.pl index 52f862bb..7cfffa17 100644 --- a/src/lib/lists.pl +++ b/src/lib/lists.pl @@ -247,16 +247,10 @@ nth0(N, Es, E) :- can_be(integer, N), can_be(list, Es), ( integer(N) -> - nth0_index(N, Es, E) + '$skip_max_list'(N, N, Es, [E|_]) ; nth0_search(N, Es, E) ). -nth0_index(0, [E|_], E) :- !. -nth0_index(N, [_|Es], E) :- - N > 0, - N1 is N - 1, - nth0_index(N1, Es, E). - nth0_search(N, Es, E) :- nth0_search(0, N, Es, E).