Did you know ... Search Documentation:
Pack prolog_library_collection -- prolog/list_ext.pl
PublicShow source

Extends the list support that is provided by the SWI-Prolog standard library.

 common_subsequence(+Subsequences:list(list), -Subsequence:list) is nondet
 empty_list(+L:list) is semidet
empty_list(-L:list) is det
 first(?L, ?Elem) is semidet
 inflist(+Elem, -L:list) is det
Lazy-lists containing an infinitely re-occurring element.

Example of use

?- inflist(0, L), append([A,B,C,D,E,F|_], _, L).
L = [0, 0, 0, 0, 0, 0|_G29924368],
A = B, B = C, C = D, D = E, E = F, F = 0,
freeze(_G29924368, list_ext: (_G29924368=[0|_G29924422], inflist(0, _G29924422)))
See also
- Based on a StackOverflow answer by Michael Hendricks.
 list_truncate(+Whole:list, +MaxLength:or([oneof([∞]),nonneg]), -Part:list) is det
Returns the truncated version of the given list. The maximum length indicates the exact maximum. Truncation will always result in a list which contains at most `MaxLength' elements.
 max_list(+L:list(number), -Max:number, +Zero:number) is det
 member(?X:term, ?Y:term, +L:list(term)) is nondet
 min_list(+L:list(number), -Min:number, +Zero:number) is det
 postfix(?Part:list, ?Whole:list) is nondet
 postfix(?Part:list, ?N:nonneg, ?Whole:list) is nondet
Part is the length-N postfix of Whole.
 prefix(?Part:list, ?Length:nonneg, ?Whole:list) is det
Shorter prefixes are generated first.
 remove_initial_members(+List1:list(term), +Members:list(term), -List2:list(term)) is det
 repeating_list(+L:list) is semidet
repeating_list(-L:list) is multi
 repeating_list(+Elem, +L:list) is semidet
repeating_list(+Elem, -L:list) is multi
repeating_list(-Elem, +L:list) is semidet
repeating_list(-Elem, -L:list) is multi
 repeating_list(+Elem, +N:nonneg, +L:list) is semidet
repeating_list(+Elem, +N:nonneg, -L:list) is det
repeating_list(+Elem, -N:nonneg, +L:list) is semidet
repeating_list(-Elem, +N:nonneg, +L:list) is semidet
repeating_list(+Elem, -N:nonneg, -L:list) is multi
repeating_list(-Elem, +N:nonneg, -L:list) is det
repeating_list(-Elem, -N:nonneg, +L:list) is det
repeating_list(-Elem, -N:nonneg, -L:list) is multi
Succeeds for lists L that repeat term Elem exactly N times.
 singleton_list(+X, +L) is semidet
singleton_list(+X, -L) is det
singleton_list(-X, +L) is det
singleton_list(-X, -L) is det
 substring(?Substring:list, +String:list) is nondet
Returns substrings of the given string. Construction proceeds from smaller to greater substrings.

`[1,3]' is not a substring of `[1,2,3]', but it is a subsequence.

 subsequence(?Subsequence:list, ?Sequence:list) is nondet
Returns substrings of the given string. Construction proceeds from smaller to greater subsequences.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

 list_intersperse(Arg1, Arg2, Arg3)
 postfix(Arg1, Arg2, Arg3)
 remove_trailing_members(Arg1, Arg2, Arg3)
 member(Arg1, Arg2)
 memberchk(Arg1, Arg2)
 append(Arg1, Arg2)
 append(Arg1, Arg2, Arg3)
 prefix(Arg1, Arg2)
 select(Arg1, Arg2, Arg3)
 selectchk(Arg1, Arg2, Arg3)
 select(Arg1, Arg2, Arg3, Arg4)
 selectchk(Arg1, Arg2, Arg3, Arg4)
 nextto(Arg1, Arg2, Arg3)
 delete(Arg1, Arg2, Arg3)
 nth0(Arg1, Arg2, Arg3)
 nth1(Arg1, Arg2, Arg3)
 nth0(Arg1, Arg2, Arg3, Arg4)
 nth1(Arg1, Arg2, Arg3, Arg4)
 last(Arg1, Arg2)
 proper_length(Arg1, Arg2)
 same_length(Arg1, Arg2)
 reverse(Arg1, Arg2)
 permutation(Arg1, Arg2)
 flatten(Arg1, Arg2)
 clumped(Arg1, Arg2)
 subseq(Arg1, Arg2, Arg3)
 max_member(Arg1, Arg2)
 min_member(Arg1, Arg2)
 max_member(Arg1, Arg2, Arg3)
 min_member(Arg1, Arg2, Arg3)
 sum_list(Arg1, Arg2)
 max_list(Arg1, Arg2)
 min_list(Arg1, Arg2)
 numlist(Arg1, Arg2, Arg3)
 is_set(Arg1)
 list_to_set(Arg1, Arg2)
 intersection(Arg1, Arg2, Arg3)
 union(Arg1, Arg2, Arg3)
 subset(Arg1, Arg2)
 subtract(Arg1, Arg2, Arg3)