mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-20 03:43:51 +00:00
90 lines
7.5 KiB
Plaintext
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.
|