Files
mercury/trial/std_util.int
1997-12-23 05:02:38 +00:00

90 lines
7.5 KiB
Plaintext

:- module std_util.
:- interface.
:- import_module list, set.
:- type (std_util:univ).
:- pred std_util:type_to_univ(T, (std_util:univ)).
:- mode std_util:type_to_univ(mercury_builtin:di, mercury_builtin:uo) is det.
:- mode std_util:type_to_univ(mercury_builtin:in, mercury_builtin:out) is det.
:- mode std_util:type_to_univ(mercury_builtin:out, mercury_builtin:in) is semidet.
:- pred std_util:univ_to_type((std_util:univ), T).
:- mode std_util:univ_to_type(mercury_builtin:in, mercury_builtin:out) is semidet.
:- mode std_util:univ_to_type(mercury_builtin:out, mercury_builtin:in) is det.
:- mode std_util:univ_to_type(mercury_builtin:uo, mercury_builtin:di) is det.
:- func std_util:univ(T) = (std_util:univ).
:- mode std_util:univ(mercury_builtin:in) = mercury_builtin:out is det.
:- mode std_util:univ(mercury_builtin:di) = mercury_builtin:uo is det.
:- mode std_util:univ(mercury_builtin:out) = mercury_builtin:in is semidet.
:- func std_util:univ_type((std_util:univ)) = (std_util:type_info).
:- type (std_util:maybe(T))
---> std_util:no
; std_util:yes(T).
:- type (std_util:unit)
---> std_util:unit.
:- type (std_util:pair(T1, T2))
---> std_util:'-'(T1, T2).
:- type (std_util:pair(T)) == (std_util:pair(T, T)).
:- pred std_util:solutions((pred T), (list:list(T))).
:- mode std_util:solutions((pred(mercury_builtin:out) is multi), mercury_builtin:out) is det.
:- mode std_util:solutions((pred(mercury_builtin:out) is nondet), mercury_builtin:out) is det.
:- pred std_util:solutions_set((pred T), (set:set(T))).
:- mode std_util:solutions_set((pred(mercury_builtin:out) is multi), mercury_builtin:out) is det.
:- mode std_util:solutions_set((pred(mercury_builtin:out) is nondet), mercury_builtin:out) is det.
:- pred std_util:unsorted_solutions((pred T), (list:list(T))).
:- mode std_util:unsorted_solutions((pred(mercury_builtin:out) is multi), mercury_builtin:out) is cc_multi.
:- mode std_util:unsorted_solutions((pred(mercury_builtin:out) is nondet), mercury_builtin:out) is cc_multi.
:- pred std_util:aggregate((pred T), pred(T, U, U), U, U).
:- mode std_util:aggregate((pred(mercury_builtin:out) is multi), (pred(mercury_builtin:in, mercury_builtin:in, mercury_builtin:out) is det), mercury_builtin:in, mercury_builtin:out) is det.
:- mode std_util:aggregate((pred(mercury_builtin:out) is multi), (pred(mercury_builtin:in, mercury_builtin:di, mercury_builtin:uo) is det), mercury_builtin:di, mercury_builtin:uo) is det.
:- mode std_util:aggregate((pred(mercury_builtin:out) is nondet), (pred(mercury_builtin:in, mercury_builtin:di, mercury_builtin:uo) is det), mercury_builtin:di, mercury_builtin:uo) is det.
:- mode std_util:aggregate((pred(mercury_builtin:out) is nondet), (pred(mercury_builtin:in, mercury_builtin:in, mercury_builtin:out) is det), mercury_builtin:in, mercury_builtin:out) is det.
:- pred std_util:unsorted_aggregate((pred T), pred(T, U, U), U, U).
:- mode std_util:unsorted_aggregate((pred(mercury_builtin:out) is multi), (pred(mercury_builtin:in, mercury_builtin:in, mercury_builtin:out) is det), mercury_builtin:in, mercury_builtin:out) is cc_multi.
:- mode std_util:unsorted_aggregate((pred(mercury_builtin:out) is multi), (pred(mercury_builtin:in, mercury_builtin:di, mercury_builtin:uo) is det), mercury_builtin:di, mercury_builtin:uo) is cc_multi.
:- mode std_util:unsorted_aggregate((pred(mercury_builtin:muo) is multi), (pred(mercury_builtin:mdi, mercury_builtin:di, mercury_builtin:uo) is det), mercury_builtin:di, mercury_builtin:uo) is cc_multi.
:- mode std_util:unsorted_aggregate((pred(mercury_builtin:out) is nondet), (pred(mercury_builtin:in, mercury_builtin:di, mercury_builtin:uo) is det), mercury_builtin:di, mercury_builtin:uo) is cc_multi.
:- mode std_util:unsorted_aggregate((pred(mercury_builtin:out) is nondet), (pred(mercury_builtin:in, mercury_builtin:in, mercury_builtin:out) is det), mercury_builtin:in, mercury_builtin:out) is cc_multi.
:- mode std_util:unsorted_aggregate((pred(mercury_builtin:muo) is nondet), (pred(mercury_builtin:mdi, mercury_builtin:di, mercury_builtin:uo) is det), mercury_builtin:di, mercury_builtin:uo) is cc_multi.
:- pred std_util:maybe_pred(pred(T1, T2), T1, (std_util:maybe(T2))).
:- mode std_util:maybe_pred((pred(mercury_builtin:in, mercury_builtin:out) is semidet), mercury_builtin:in, mercury_builtin:out) is det.
:- pred std_util:semidet_succeed is semidet.
:- pred std_util:semidet_fail is semidet.
:- pred std_util:cc_multi_equal(T, T).
:- mode std_util:cc_multi_equal(mercury_builtin:di, mercury_builtin:uo) is cc_multi.
:- mode std_util:cc_multi_equal(mercury_builtin:in, mercury_builtin:out) is cc_multi.
:- type (std_util:type_info).
:- type (std_util:type_ctor_info).
:- func std_util:type_of(T) = (std_util:type_info).
:- mode std_util:type_of(mercury_builtin:unused) = mercury_builtin:out is det.
:- func std_util:type_name((std_util:type_info)) = string.
:- pred std_util:type_ctor_and_args((std_util:type_info), (std_util:type_ctor_info), (list:list((std_util:type_info)))).
:- mode std_util:type_ctor_and_args(mercury_builtin:in, mercury_builtin:out, mercury_builtin:out) is det.
:- func std_util:type_ctor((std_util:type_info)) = (std_util:type_ctor_info).
:- func std_util:type_args((std_util:type_info)) = (list:list((std_util:type_info))).
:- func std_util:type_ctor_name((std_util:type_ctor_info)) = string.
:- func std_util:type_ctor_module_name((std_util:type_ctor_info)) = string.
:- func std_util:type_ctor_arity((std_util:type_ctor_info)) = int.
:- pred std_util:type_ctor_name_and_arity((std_util:type_ctor_info), string, string, int).
:- mode std_util:type_ctor_name_and_arity(mercury_builtin:in, mercury_builtin:out, mercury_builtin:out, mercury_builtin:out) is det.
:- func std_util:make_type((std_util:type_ctor_info), (list:list((std_util:type_info)))) = (std_util:type_info).
:- mode std_util:make_type(mercury_builtin:in, mercury_builtin:in) = mercury_builtin:out is semidet.
:- mode std_util:make_type(mercury_builtin:out, mercury_builtin:out) = mercury_builtin:in is cc_multi.
:- func std_util:det_make_type((std_util:type_ctor_info), (list:list((std_util:type_info)))) = (std_util:type_info).
:- mode std_util:det_make_type(mercury_builtin:in, mercury_builtin:in) = mercury_builtin:out is det.
:- func std_util:num_functors((std_util:type_info)) = int.
:- pred std_util:get_functor((std_util:type_info), int, string, int, (list:list((std_util:type_info)))).
:- mode std_util:get_functor(mercury_builtin:in, mercury_builtin:in, mercury_builtin:out, mercury_builtin:out, mercury_builtin:out) is semidet.
:- func std_util:construct((std_util:type_info), int, (list:list((std_util:univ)))) = (std_util:univ).
:- mode std_util:construct(mercury_builtin:in, mercury_builtin:in, mercury_builtin:in) = mercury_builtin:out is semidet.
:- pred std_util:functor(T, string, int).
:- mode std_util:functor(mercury_builtin:in, mercury_builtin:out, mercury_builtin:out) is det.
:- func std_util:arg(T, int) = ArgT.
:- mode std_util:arg(mercury_builtin:in, mercury_builtin:in) = mercury_builtin:out is semidet.
:- func std_util:argument(T, int) = (std_util:univ).
:- mode std_util:argument(mercury_builtin:in, mercury_builtin:in) = mercury_builtin:out is semidet.
:- func std_util:det_arg(T, int) = ArgT.
:- mode std_util:det_arg(mercury_builtin:in, mercury_builtin:in) = mercury_builtin:out is det.
:- func std_util:det_argument(T, int) = (std_util:univ).
:- mode std_util:det_argument(mercury_builtin:in, mercury_builtin:in) = mercury_builtin:out is det.
:- pred std_util:deconstruct(T, string, int, (list:list((std_util:univ)))).
:- mode std_util:deconstruct(mercury_builtin:in, mercury_builtin:out, mercury_builtin:out, mercury_builtin:out) is det.