mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 17:33:38 +00:00
tests/hard_coded/*.m:
Update programming style, unless doing so would change
the meaning of the test, in particular:
- use '.' as a module qualifier in place of '__'
- use {write,print}_line where appropriate
- use if-then-else in place of C -> T ; E
- use state variables in place of DCGs
tests/hard_coded/dir_test.m:
Document what the expected outputs correspond to.
Use a uniform module qualifier in the output.
tests/hard_coded/dir_test.exp*:
Conform to the above change.
59 lines
1.2 KiB
Mathematica
59 lines
1.2 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
|
|
:- module unify_expression.
|
|
:- interface.
|
|
|
|
:- import_module io.
|
|
|
|
:- pred main(io::di, io::uo) is det.
|
|
|
|
:- implementation.
|
|
|
|
:- import_module require.
|
|
:- import_module std_util.
|
|
|
|
:- type t
|
|
---> f(int, int)
|
|
; g(t).
|
|
|
|
main(!IO) :-
|
|
( if p(g(f(1, 2)), X) then
|
|
io.write_line(X, !IO)
|
|
else
|
|
io.write_string("Error: p failed\n", !IO)
|
|
),
|
|
( if q(1, 2) then
|
|
io.print_line("Error: q succeeded", !IO)
|
|
else
|
|
io.print_line("q failed (as expected)", !IO)
|
|
),
|
|
|
|
( if r(1, 2) then
|
|
io.print_line("Error: r succeeded", !IO)
|
|
else
|
|
io.print_line("r failed (as expected)", !IO)
|
|
).
|
|
|
|
:- pred p(t::in, t::out) is semidet.
|
|
|
|
p(X @ f(_, _), X).
|
|
p(g(X @ f(_, _)), X).
|
|
|
|
:- pred q(int::in, int::in) is semidet.
|
|
q(X, X @ g(_, _)).
|
|
|
|
:- pred r(int::in, int::in) is semidet.
|
|
r(X, X @ g(1, 2)).
|
|
|
|
:- func g(int, int) = int.
|
|
:- mode g(in, in) = out is semidet.
|
|
:- mode g(out, out) = in is semidet.
|
|
g(1, 2) = X :-
|
|
( if semidet_succeed then
|
|
error("g called")
|
|
else
|
|
X = 3
|
|
).
|