Did you know ... Search Documentation: Pack genutils -- prolog/listutils.pl
natural(+N) is semidet
natural(-N:natural) is multi
Means N is a natural number (includes 0). If N is a variable, succeeds an infinite number of times on backtracking, returning all natural numbers.
int(+N) is semidet
int(-N:integer) is multi
Means N is an integer. If N is a variable, succeeds an infinite number of times on backtracking, returning all integers starting at zero and interleaving positive and negative values.
enumerate(+L:list(A), -NL:list(pair(natural,A))) is det
enumerate(-L:list(A), -NL:list(pair(natural,A))) is nondet
measure(+L:list(_), -N:list(natural)) is det
measure(-L:list(_), -N:list(natural)) is nondet
True when L and N are the same lenght and N is a sequence of integers starting at 1.
print_list(+L:list) is det
Print a list, one item per line.
printq_list(+L:list) is det
Print a list, one item per line, as with writeq/1.
print_numbered_list(+L:list) is det
Print a list with numbered lines.
List constructor.
List deconstructor.
rep(+N:natural, ?X:A, -L:list(A)) is det
rep(-N:natural, ?X:A, -L:list(A)) is multi
Make a list consisting of N repeats of the same term. If called with N unbount, creates progressively longer and longer lists on backtracking.
drop(+N:natural, +In:list(A), -Out:list(A)) is semidet
True if removing exactly N elements from the head of In results in Out. Fails if there are fewer than N elements in In.
take(+N:natural, +In:list(A), -Out:list(A)) is semidet
True when Out consists of the first N elements of Out. Fails if In contains fewer than N elements.
dropc(+N:natural, +In:list(A), -Out:list(A)) is det
Unifies Out with the result of removing N elements from the head if In, or the empty list if In has fewer than N elements. (The 'c' is for a 'complete' as opposed to a 'partial' function.)
takec(+N:natural, +In:list(A), -Out:list(A)) is semidet
Unifies Out with the first N elements of In, or the empty list if In has fewer than N elements. (The 'c' is for a 'complete' as opposed to a 'partial' function.)
drop_while(+P:pred(A), +In:list(A), -Out:list(A)) is det
Remove all elements from head of In that are accepted by P and return the remained in Out.
take_while(+P:pred(A), +In:list(A), -Out:list(A)) is det
Remove all elements from head of In that are accepted by P and return them in Out.
split_at(+N:natural, -Prefix:list(A), -Suffix:list(A), +In:list(A)) is det
split_at(-N:natural, -Prefix:list(A), -Suffix:list(A), +In:list(A)) is det
True when Prefix is the length-N prefix of Items and Suffix is the list of remaining items. Also works in other modes, like append.
same_length(+L1:list(_), +L2:list(_)) is det
same_length(-L1:list(_), -L2:list(_)) is nondet
True when L1 and L2 are lists of the same length.
zip(+X:list(A), +Y:list(B), -Z:list(pair(A,B))) is det
zip(-X:list(A), -Y:list(B), +Z:list(pair(A,B))) is det
zip(?X:list(A), ?Y:list(B), ?Z:list(pair(A,B))) is nondet
True when Z is the list of pairs formed from corresponding elements of X and Y. The pair type is `pair(A,B) ---> A-B`.
map_filter(+P:pred(+A,-B), +L1:list(A), -L2:list(B)) is det
Like maplist/3, but filtering out those elements of L2 for which P fails.
foldr(P:pred(A,B,B), X:list(A), S1:B, S2:B) is det