[mercury-users] pragma memo and failure determinism
Peter Hawkins
hawkinsp at cs.stanford.edu
Wed Jul 5 01:41:57 AEST 2006
Hi...
On Jul 4, 2006, at 4:37 AM, Julien Fischer wrote:
>> While I admit tabling a predicate with failure determinism is a
>> stupid thing to do, the mercury program I'm compiling is the output
>> of another compiler which doesn't do its own determinism inference
>> and doesn't know that Mercury will infer the determinism failure for
>> this predicate. The other compiler blindly puts pragma minimal_model
>> declarations on everything.
>
> I assume that you meant pragma memo there.
>
No, I mean minimal_model. The error message is slightly misleading,
but I assume it's talking about the general class of memoing
declarations.
>> Would it be possible for this error to
>> become a warning instead, and have Mercury ignore the pragma memo
>> declaration in this case?
>
> No, it as an error and by default the compiler should treat it as
> such.
> It would be possible to add an option that did what you wanted but I'm
> not sure that such a thing is generally applicable (beyond scratching
> your particular itch.)
Well, it's not a very fatal error -- there's a very sensible error
recovery behaviour. It is completely harmless to ignore the tabling
declaration in this case. I can't leave minimal_model declarations
off in general, since the program won't terminate without them. And I
don't know where to leave them off, since I don't know any of the
determinisms in advance duplicating a pass of the Mercury compiler.
Incidentally I just saw this exception when trying to build the
following test program:
Uncaught Mercury exception:
Software Error: table.m: Unexpected: table_gen_transform_proc:
minimal semi
Stack dump not available in this grade.
:- module test.
:- interface.
:- implementation.
:- pred foo(int::in).
:- pragma minimal_model(foo/1).
foo(_) :- fail.
Cheers,
Peter
--------------------------------------------------------------------------
mercury-users mailing list
post: mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the users
mailing list