- From: <bugzilla@jessica.w3.org>
- Date: Thu, 02 Dec 2010 15:00:40 +0000
- To: public-qt-comments@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=11352 Mary Holstege <holstege@mathling.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |holstege@mathling.com --- Comment #5 from Mary Holstege <holstege@mathling.com> 2010-12-02 15:00:37 UTC --- (In reply to comment #4) > > 1. Require an implementation to raise an error if the functions determinism (as > determined by static analysis) does not match its declaration. This is my > preferred option. > 2. If we can't get consensus for that, allow an implementation to raise an > error in this case, and specify the error. Make it implementation-defined > whether the error is actually raised. > > I'm not convinced that the default should be 'deterministic'. Given the > definition of deterministic in F&O, it's easy enough to determine, statically, > whether a function is deterministic or not. Perhaps we should simply require > implementations to do so? I am opposed to either requiring the error or changing the default. It is perfectly reasonable to label a deterministic function as non-deterministic: maybe it is a stub that is expected to be non-deterministic when the full implementation is done, or maybe it is an attempt to see what the performance implications of the use of a non-deterministic function would be. It is also perfectly reasonable to label a function which is technically non-deterministic as deterministic. Consider a function that constructs a sequence of nodes and then applies some path expression on them, so they return in document order. Well, document order is undefined and therefore technically non-deterministic in this case. Maybe, however, the developer knows that in the full context of the use of this application that non-determinism makes no material difference to the execution of the program. I see no reason why we should force an error because a human was smarter than a static analyzer and wanted to provide an optimizer hint. For usability and compatibility reasons, the default should not be non-deterministic, as that requires people with existing modules to either have to rewrite every single function in them in order to use that module in a 3.0 processor just to get the same performance characteristics as before. This forced change would be doubly bad because it would only show up as a mysterious performance hit and the fact is that most functions in XQuery are deterministic. We should choose defaults to match reality. -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug.
Received on Thursday, 2 December 2010 15:00:45 UTC