| Did you know ... | Search Documentation: |
| Pack prolog_library_collection -- prolog/call_ext.pl |
Assumes that terms enumerated by `Goal_1' are ground.
The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.
call(Goal, Xi) succeeds.
call(Goal, Xi) fails.
call(Pred, X) succeeds and
Excluded contains the remaining elements.
call(Pred, Xi, Place),
where Place must be unified to one of <, = or >.
Pred must be deterministic.
maplist(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn]) :-
call(G, X_11, ..., X_m1),
call(G, X_12, ..., X_m2),
...
call(G, X_1n, ..., X_mn).
This family of predicates is deterministic iff Goal is deterministic
and List1 is a proper list, i.e., a list that ends in [].
maplist(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn]) :-
call(G, X_11, ..., X_m1),
call(G, X_12, ..., X_m2),
...
call(G, X_1n, ..., X_mn).
This family of predicates is deterministic iff Goal is deterministic
and List1 is a proper list, i.e., a list that ends in [].
maplist(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn]) :-
call(G, X_11, ..., X_m1),
call(G, X_12, ..., X_m2),
...
call(G, X_1n, ..., X_mn).
This family of predicates is deterministic iff Goal is deterministic
and List1 is a proper list, i.e., a list that ends in [].
maplist(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn]) :-
call(G, X_11, ..., X_m1),
call(G, X_12, ..., X_m2),
...
call(G, X_1n, ..., X_mn).
This family of predicates is deterministic iff Goal is deterministic
and List1 is a proper list, i.e., a list that ends in [].
call(Goal, ElemIn, _)
fails are omitted from ListOut. For example (using library(yall)):
?- convlist([X,Y]>>(integer(X), Y is X^2),
[3, 5, foo, 2], L).
L = [9, 25, 4].
foldl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
folding operation:
foldl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, V) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, V).
No implementation for a corresponding foldr is given. A foldr
implementation would consist in first calling reverse/2 on each of
the m input lists, then applying the appropriate foldl. This is
actually more efficient than using a properly programmed-out
recursive algorithm that cannot be tail-call optimized.
foldl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
folding operation:
foldl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, V) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, V).
No implementation for a corresponding foldr is given. A foldr
implementation would consist in first calling reverse/2 on each of
the m input lists, then applying the appropriate foldl. This is
actually more efficient than using a properly programmed-out
recursive algorithm that cannot be tail-call optimized.
foldl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
folding operation:
foldl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, V) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, V).
No implementation for a corresponding foldr is given. A foldr
implementation would consist in first calling reverse/2 on each of
the m input lists, then applying the appropriate foldl. This is
actually more efficient than using a properly programmed-out
recursive algorithm that cannot be tail-call optimized.
foldl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
folding operation:
foldl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, V) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, V).
No implementation for a corresponding foldr is given. A foldr
implementation would consist in first calling reverse/2 on each of
the m input lists, then applying the appropriate foldl. This is
actually more efficient than using a properly programmed-out
recursive algorithm that cannot be tail-call optimized.
scanl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
scanning operation:
scanl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, [V0, V1, ..., Vn] ) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, Vn).
scanl behaves like a foldl that collects the sequence of
values taken on by the Vx accumulator into a list.
scanl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
scanning operation:
scanl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, [V0, V1, ..., Vn] ) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, Vn).
scanl behaves like a foldl that collects the sequence of
values taken on by the Vx accumulator into a list.
scanl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
scanning operation:
scanl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, [V0, V1, ..., Vn] ) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, Vn).
scanl behaves like a foldl that collects the sequence of
values taken on by the Vx accumulator into a list.
scanl family of predicates is defined as
follows, with V0 an initial value and V the final value of the
scanning operation:
scanl(G, [X_11, ..., X_1n],
[X_21, ..., X_2n],
...,
[X_m1, ..., X_mn], V0, [V0, V1, ..., Vn] ) :-
call(G, X_11, ..., X_m1, V0, V1),
call(G, X_12, ..., X_m2, V1, V2),
...
call(G, X_1n, ..., X_mn, V<n-1>, Vn).
scanl behaves like a foldl that collects the sequence of
values taken on by the Vx accumulator into a list.
The following predicates are exported, but not or incorrectly documented.