mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 09:53:36 +00:00
This first step deals with the consequences of such removal.
The removal itself will happen in stage 2. That step will
add "is" to the prolog module in the library.
compiler/add_pred.m:
Prepare for "is" being in the prolog module.
compiler/options.m:
Add a way to test whether the change to add_pred.m is in the
installed compiler.
tests/accumulator/base.m:
tests/accumulator/call_in_base.m:
tests/accumulator/chain.m:
tests/accumulator/commutative.m:
tests/accumulator/construct_test.m:
tests/accumulator/dcg.m:
tests/accumulator/deconstruct_test.m:
tests/accumulator/disj.m:
tests/accumulator/func.m:
tests/accumulator/heuristic.m:
tests/accumulator/highorder.m:
tests/accumulator/identity.m:
tests/accumulator/inter.m:
tests/accumulator/nonrec.m:
tests/accumulator/out_to_in.m:
tests/accumulator/qsort.m:
tests/accumulator/simple.m:
tests/accumulator/split.m:
tests/accumulator/swap.m:
tests/benchmarks/cqueens.m:
tests/benchmarks/crypt.m:
tests/benchmarks/deriv.m:
tests/benchmarks/deriv2.m:
tests/benchmarks/nrev.m:
tests/benchmarks/poly.m:
tests/benchmarks/primes.m:
tests/benchmarks/qsort.m:
tests/benchmarks/query.m:
tests/benchmarks/tak.m:
tests/debugger/interactive.m:
tests/declarative_debugger/Mercury.options:
tests/declarative_debugger/io_read_bug.m:
tests/declarative_debugger/queens.exp:
tests/declarative_debugger/queens.m:
tests/dppd/imperative_solve_impl.m:
tests/dppd/map_impl.m:
tests/dppd/max_length_impl.m:
tests/dppd/sum.m:
tests/dppd/upto_sum_impl.m:
tests/par_conj/dep_par_21.m:
tests/tabling/seq.m:
tests/term/dds3_14.m:
tests/term/mmatrix.m:
tests/term/money.m:
tests/term/occur.m:
tests/term/pl4_5_2.m:
tests/term/queens.m:
tests/typeclasses/inference_test.m:
tests/typeclasses/inference_test_2.m:
tests/valid/lazy_list.m:
tests/warnings/duplicate_const.m:
Replace calls to "is" with unifications. In many places,
bring programming style up to date.
61 lines
1.3 KiB
Mathematica
61 lines
1.3 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
|
|
:- module map_impl.
|
|
|
|
:- interface.
|
|
|
|
:- import_module list.
|
|
|
|
:- pred map_rev(list(list(T))::in, list(list(T))::out) is det.
|
|
|
|
:- pred map_reduce_add(list(list(int))::in, list(int)::out) is det.
|
|
|
|
:- implementation.
|
|
|
|
:- import_module int.
|
|
|
|
map_reduce_add(L, R) :-
|
|
mymap(reduce_add, L, R).
|
|
|
|
map_rev(L, R) :-
|
|
mymap(rev, L, R).
|
|
|
|
:- pred mymap(pred(T, U), list(T), list(U)).
|
|
:- mode mymap(pred(in, out) is det, in, out) is det.
|
|
|
|
mymap(_P, [], []).
|
|
mymap(P, [H | T], [PH | PT]) :-
|
|
call(P, H, PH),
|
|
mymap(P, T, PT).
|
|
|
|
:- pred reduce_add(list(int)::in, int::out) is det.
|
|
|
|
reduce_add(List, Res) :-
|
|
reduce(add, 0, List, Res).
|
|
|
|
:- pred add(int::in, int::in, int::out) is det.
|
|
|
|
add(X, Y, Z) :-
|
|
Z = X + Y.
|
|
|
|
:- pred reduce(pred(U, T, T), T, list(U), T).
|
|
:- mode reduce(pred(in, in, out) is det, in, in, out) is det.
|
|
|
|
reduce(_Func, Base, [], Base).
|
|
reduce(Func, Base, [H | T], Res) :-
|
|
reduce(Func, Base, T, TRes),
|
|
call(Func, H, TRes, Res).
|
|
|
|
:- pred rev(list(T)::in, list(T)::out) is det.
|
|
|
|
rev(L, R) :-
|
|
rev(L, [], R).
|
|
|
|
:- pred rev(list(T)::in, list(T)::in, list(T)::out) is det.
|
|
|
|
rev([], L, L).
|
|
rev([H | T], A, R) :-
|
|
rev(T, [H | A], R).
|