[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