[m-dev.] proposal for promise_pure scope warning

Julien Fischer juliensf at csse.unimelb.edu.au
Tue Apr 15 14:09:47 AEST 2008


On Tue, 15 Apr 2008, Ian MacLarty wrote:

> 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?

Maybe, but the compiler won't optimise that away because it can fail.
(Which is the "bug" I assume you are trying to address here)

Julien.
--------------------------------------------------------------------------
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