- From: <bugzilla@farnsworth.w3.org>
- Date: Tue, 01 Apr 2008 03:56:11 +0000
- To: public-qt-comments@w3.org
- CC:
------- Comment #8 from jmdyck@ibiblio.org 2008-04-01 03:56 ------- (In reply to comment #7) > > Consider the following query: > abs( > remove( (xs:integer("-1"), xs:float("-2.0")), 2 ) > ) instance of xs:float > > ... > Along with the rules given in Formal Semantics 4.1.5 this says that during > static analysis, only a type is assigned to the function call (in this case > the type assigned is xs:float through the rules in 7.2.3), Agreed. > and that the function itself is chosen when the call is evaluated > and in this case the version operating on xs:floats is selected, > and so the argument is cast to a float I'm not sure what leads you to that conclusion. The only suggestion I could find that there even *are* multiple "versions" of fn:abs is in F+O section 1.4, where it says that a signature involving 'numeric' represents four signatures. But the XQuery and FS specs are fairly clear that fn:abs has only one signature and one implementation. As far as I can tell, they agree that the argument to fn:abs is not cast to anything, and so the result is also an xs:integer. > I suggest that the static type of the function (in the first case) should have > been inferred as xs:integer | xs:float. Yes, I agree, that needs to be fixed. > This however leaves the selection of the function used ambiguous, There I disagree. The static type inferred for a function call does not influence its dynamic evaluation.
Received on Friday, 4 April 2008 09:59:49 UTC