[m-dev.] proposal for promise_pure scope warning

Ian MacLarty maclarty at csse.unimelb.edu.au
Tue Apr 15 13:47:09 AEST 2008

On Tue, Apr 15, 2008 at 01:05:22PM +1000, Julien Fischer wrote:
> On Tue, 15 Apr 2008, Ian MacLarty wrote:
>> On Tue, Apr 15, 2008 at 9:26 AM, Peter Schachte
>> <schachte at csse.unimelb.edu.au> wrote:
>>>>>  Well, either the author of the called predicate made it impure for a
>>>>>  reason, in which case you shouldn't be promising that a call to the
>>>>>  predicate is pure, or the author made a mistake and the predicate is
>>>>>  actually pure, in which case it is the author's responsibility to
>>>>>  fix the interface.  In any case the warning can always be disabled.
>>>  Isn't it possible for one particular call to a generally impure 
>>> predicate
>>> to be pure?  Eg, with that particular argument list, it's pure.
>> I suppose so, but is this a good enough reason not to issue a warning?
>> I've come across bugs where this warning would have helped twice now.
>> Most of the warnings issued by the compiler have cases where they
>> don't apply (consider for example too lax determinism warnings).  We
>> still issue them, because often they are helpful. In the cases where
>> the warning is inappropriate we usually either change the code or
>> disable the warning if changing the code is not possible.
>> I think the warning I'm proposing would be useful enough to be worth
>> the slight inconvenience caused when it's not applicable.
> You could always have the warning turned off by default.
> I think you only want to emit a warning for promise_pure scopes around
> impure goals that do not have any outputs and have determinism det or
> cc_multi however.

Why no outputs?

Also why only if the determinism is det or cc_multi?

If you have:

    promise_pure ( impure p )

where p is semidet, then surely that is an error?

mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au

More information about the developers mailing list