manually expand module names in higher-order predicates of lists.pl and give call_residue_vars/2 a meta-predicate definition
This commit is contained in:
@@ -156,6 +156,8 @@ user:goal_expansion(Term, M:get_atts(Var, Attr)) :-
|
|||||||
nonvar(Term),
|
nonvar(Term),
|
||||||
Term = get_atts(Var, M, Attr).
|
Term = get_atts(Var, M, Attr).
|
||||||
|
|
||||||
|
:- meta_predicate call_residue_vars(0, ?).
|
||||||
|
|
||||||
call_residue_vars(Goal, Vars) :-
|
call_residue_vars(Goal, Vars) :-
|
||||||
'$get_attr_var_queue_delim'(B),
|
'$get_attr_var_queue_delim'(B),
|
||||||
call(Goal),
|
call(Goal),
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ maplist(Cont, [E1|E1s], [E2|E2s], [E3|E3s], [E4|E4s], [E5|E5s], [E6|E6s], [E7|E7
|
|||||||
|
|
||||||
|
|
||||||
sum_list(Ls, S) :-
|
sum_list(Ls, S) :-
|
||||||
foldl(sum_, Ls, 0, S).
|
foldl(lists:sum_, Ls, 0, S).
|
||||||
|
|
||||||
sum_(L, S0, S) :- S is S0 + L.
|
sum_(L, S0, S) :- S is S0 + L.
|
||||||
|
|
||||||
@@ -164,13 +164,13 @@ lists_transpose([L|Ls], Ts) :-
|
|||||||
foldl(transpose_, L, Ts, [L|Ls], _).
|
foldl(transpose_, L, Ts, [L|Ls], _).
|
||||||
|
|
||||||
transpose_(_, Fs, Lists0, Lists) :-
|
transpose_(_, Fs, Lists0, Lists) :-
|
||||||
maplist(list_first_rest, Lists0, Fs, Lists).
|
maplist(lists:list_first_rest, Lists0, Fs, Lists).
|
||||||
|
|
||||||
list_first_rest([L|Ls], L, Ls).
|
list_first_rest([L|Ls], L, Ls).
|
||||||
|
|
||||||
|
|
||||||
list_to_set(Ls0, Ls) :-
|
list_to_set(Ls0, Ls) :-
|
||||||
maplist(with_var, Ls0, LVs0),
|
maplist(lists:with_var, Ls0, LVs0),
|
||||||
keysort(LVs0, LVs),
|
keysort(LVs0, LVs),
|
||||||
same_elements(LVs),
|
same_elements(LVs),
|
||||||
pick_firsts(LVs0, Ls).
|
pick_firsts(LVs0, Ls).
|
||||||
@@ -188,7 +188,7 @@ with_var(E, E-_).
|
|||||||
|
|
||||||
same_elements([]).
|
same_elements([]).
|
||||||
same_elements([EV|EVs]) :-
|
same_elements([EV|EVs]) :-
|
||||||
foldl(unify_same, EVs, EV, _).
|
foldl(lists:unify_same, EVs, EV, _).
|
||||||
|
|
||||||
unify_same(E-V, Prev-Var, E-V) :-
|
unify_same(E-V, Prev-Var, E-V) :-
|
||||||
( Prev == E ->
|
( Prev == E ->
|
||||||
@@ -221,13 +221,13 @@ nth0_search(N0, N, [_|Es], E) :-
|
|||||||
|
|
||||||
|
|
||||||
list_max([N|Ns], Max) :-
|
list_max([N|Ns], Max) :-
|
||||||
foldl(list_max_, Ns, N, Max).
|
foldl(lists:list_max_, Ns, N, Max).
|
||||||
|
|
||||||
list_max_(N, Max0, Max) :-
|
list_max_(N, Max0, Max) :-
|
||||||
Max is max(N, Max0).
|
Max is max(N, Max0).
|
||||||
|
|
||||||
list_min([N|Ns], Min) :-
|
list_min([N|Ns], Min) :-
|
||||||
foldl(list_min_, Ns, N, Min).
|
foldl(lists:list_min_, Ns, N, Min).
|
||||||
|
|
||||||
list_min_(N, Min0, Min) :-
|
list_min_(N, Min0, Min) :-
|
||||||
Min is min(N, Min0).
|
Min is min(N, Min0).
|
||||||
|
|||||||
Reference in New Issue
Block a user