[m-users.] Import only notations from a module?
Anders Lundstedt
mercury-users at anderslundstedt.se
Sat Jul 13 21:53:14 AEST 2024
Dear all,
I like using ‘use_module’ instead of ‘import_module’ since this forces
me to properly qualify names. However, some notations would be nice to
have—in particular, list notations.
I would be fine with having to redefine notations, as for example in
the following non-compiling attempt (which does compile if one imports
the list module and removes my attempt at redefining the notations).
Code:
:- module list_notations.
:- interface.
:- use_module list.
:- func '[]' = list.list(T).
:- func '[|]'(T, list.list(T)) = list.list(T).
:- func replace_everything(T, list.list(T)) = list.list(T).
:- implementation.
[] = list.'[]'.
[HD | TL] = list.'[|]'(HD, TL).
replace_everything(A, L) = RES :- (
if L = [_ | TL] then
RES = [A | replace_everything(A, TL)]
else
RES = []
).
Compilation error message:
list_notations.m:018: In clause for `replace_everything(in, in) = out':
list_notations.m:018: in argument 1 of call to function
list_notations.m:018: `list_notations.[|]'/2:
list_notations.m:018: mode error: variable `V_7' has instantiatedness `free',
list_notations.m:018: expected instantiatedness was `ground'.
Best,
Anders Lundstedt
More information about the users
mailing list