[m-users.] IO and global state.

Sean Charles (emacstheviking) objitsu at gmail.com
Mon Apr 26 23:32:28 AEST 2021


Zoltan,

I will do my best to pay more attention to the error messages.



> On 26 Apr 2021, at 14:02, Zoltan Somogyi <zoltan.somogyi at runbox.com> wrote:
> 
> 
> 
> On Mon, 26 Apr 2021 07:51:57 +0100, "Sean Charles (emacstheviking)" <objitsu at gmail.com> wrote:
>> :- func debug_on(felt_options) = bool.
>> :- func debug_on(io::di, io::uo) = bool.   % LINE 28, see error message below.
> ...
>> options.m:028: Error: some but not all arguments have modes.
>> options.m:028:   The argument without a mode is the return value.
>> ** Error making `Mercury/int3s/options.int3'.
>> make: *** [felt] Error 1
>> 
>> 
>> Help! I am confused because it looks identical to the declaration on the previous line except it uses IO not the option_table...
> 
> You need to pay more attention to the error messages.
> 
> The second declaration differs from the first NOT just in using IO
> instead of the option table. It also differs by specifying modes for
> the I/O state arguments, which the first declaration did not do
> for the felt_options argument. The error message specifically told you
> that this was the problem.
> 
> Mercury requires that if you specify a mode for *some* arguments
> of a predicate or function, then you must specify a mode for *all* of them.
> 
> Zoltan.
> 



More information about the users mailing list