mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-22 21:03:53 +00:00
40 lines
1.0 KiB
Plaintext
40 lines
1.0 KiB
Plaintext
:- module pretty_print_test.
|
|
:- interface.
|
|
:- import_module io.
|
|
:- pred main(io, io).
|
|
:- mode main(di, uo) is det.
|
|
:- implementation.
|
|
:- type foobar
|
|
---> foo
|
|
; bar(int)
|
|
; baz(int, int).
|
|
:- type cont(T)
|
|
---> foo
|
|
; cont(T, cont(T)).
|
|
:- type eq(T1, T2) == foobar.
|
|
main(DCG_0, DCG_2) :-
|
|
io.write_int(type_num(42), DCG_0, DCG_1),
|
|
io.nl(DCG_1, DCG_2).
|
|
:- typeclass numbered_type(T) where [
|
|
func type_num(T) = int,
|
|
func type_num_2(T) = int,
|
|
pred type_num_3(T, int),
|
|
mode type_num_3(in, out),
|
|
mode type_num_3(out, in),
|
|
pred type_num_4(T, int),
|
|
mode type_num_4(in, out)
|
|
].
|
|
:- instance (numbered_type(int)) where [
|
|
func(type_num/1) is foo_type_num,
|
|
func(type_num_2/1) is foo_type_num,
|
|
pred(type_num_3/2) is foo_type_num_p,
|
|
pred(type_num_4/2) is foo_type_num_p
|
|
].
|
|
:- func foo_type_num(int) = int.
|
|
foo_type_num(V_1) = 42.
|
|
:- pred foo_type_num_p(int, int).
|
|
:- mode foo_type_num_p(in, out) is det.
|
|
:- mode foo_type_num_p(out, in) is det.
|
|
foo_type_num_p(V_1, 42).
|
|
:- end_module pretty_print_test.
|