
apply.pl -- Apply predicates on a listThis module defines meta-predicates that apply a predicate on all members of a list.
include(:Goal, +List1, ?List2) is detcall(Goal, Xi) succeeds.
exclude(:Goal, +List1, ?List2) is detcall(Goal, Xi) fails.
partition(:Pred, +List, ?Included, ?Excluded) is detcall(Pred, X) succeeds and
Excluded contains the remaining elements.
partition(:Pred, +List, ?Less, ?Equal, ?Greater) is semidetcall(Pred, Xi, Place),
where Place must be unified to one of <, = or >.
Pred must be deterministic.
maplist(:Goal, ?List)
maplist(:Goal, ?List1, ?List2)
maplist(:Goal, ?List1, ?List2, ?List3)
maplist(:Goal, ?List1, ?List2, ?List3, ?List4)
convlist(:Goal, +ListIn, -ListOut) is detcall(Goal, ElemIn, _)
fails are omitted from ListOut. For example (using library(yall)):
?- convlist([X,Y]>>(integer(X), Y is X^2),
[3, 5, 4.4, 2], L).
L = [9, 25, 4].
foldl(:Goal, +List, +V0, -V)
foldl(:Goal, +List1, +List2, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +List4, +V0, -V)
foldl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0, Vn) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).
scanl(:Goal, +List, +V0, -Values)
scanl(:Goal, +List1, +List2, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +List4, +V0, -Values)
scanl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0,
[V0,V1,...,Vn]) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).
foldl(:Goal, +List, +V0, -V)
foldl(:Goal, +List1, +List2, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +List4, +V0, -V)
foldl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0, Vn) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).
foldl(:Goal, +List, +V0, -V)
foldl(:Goal, +List1, +List2, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +List4, +V0, -V)
foldl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0, Vn) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).
foldl(:Goal, +List, +V0, -V)
foldl(:Goal, +List1, +List2, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +V0, -V)
foldl(:Goal, +List1, +List2, +List3, +List4, +V0, -V)
foldl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0, Vn) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).
scanl(:Goal, +List, +V0, -Values)
scanl(:Goal, +List1, +List2, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +List4, +V0, -Values)
scanl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0,
[V0,V1,...,Vn]) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).
scanl(:Goal, +List, +V0, -Values)
scanl(:Goal, +List1, +List2, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +List4, +V0, -Values)
scanl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0,
[V0,V1,...,Vn]) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).
scanl(:Goal, +List, +V0, -Values)
scanl(:Goal, +List1, +List2, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +V0, -Values)
scanl(:Goal, +List1, +List2, +List3, +List4, +V0, -Values)
scanl(P, [X11,...,X1n], ..., [Xm1,...,Xmn], V0,
[V0,V1,...,Vn]) :-
P(X11, ..., Xm1, V0, V1),
...
P(X1n, ..., Xmn, V', Vn).