- From: Liam R E Quin <liam@w3.org>
- Date: Tue, 26 Jan 2010 11:39:30 -0500
- To: Xavier Franc <xfranc@online.fr>, public-xqts-comments@w3.org
- Cc: Michael Rys <mrys@microsoft.com>, "www-ql@w3.org" <www-ql@w3.org>
[these messages got stuck in the moderation queue because they are large, or rather because the content-length says they are large...] On Tue, 2010-01-19 at 02:41 +0000, Xavier Franc wrote: > Hello Michael, > > OK, it seems I had a wrong or outdated conception of Static Typing. > (In my defence, it is a feature I have a bit neglected as I deem it > not very useful in absence of Schema, since in that case it does not > prevent runtime type errors.) > > I would like to make just a few remarks (not only for my own sake): > - I could not find any definition of Static Typing in plain English > in the specs, other than this section 5.2.3. In particular there is > no > mention whatsoever of optimistic or pessimistic checking. > But perhaps all this it entirely obvious to adepts of Formal > Semantics. > - The term "static typing" is in itself too vague and therefore > confusing. > - All tests in XQTS related to ST can in fact be passed by an > implementation that does *not* support ST but works as stated > in section 5.2.3 ... > > Cheers > > Michael Rys wrote: > > Hi Xavier > > > > > > > > I am not clear I understand your comments. The static typing feature > > assumes so called pessimistic checks. Which means that an > > expression /a/b will always infer element(b)* unless a schema > > guarantees that there is exactly one a containing one b. Also, if > > the static analysis infers type node()* then a static typing > > implementation would have to raise an error if there is at least the > > possibility that it could lead to a runtime type error. The comment > > you cite below in section 5.2.3 means that you can still do the same > > static type inferencing in a dynamically typed system as if you > > support the static typing feature, but you would have to use > > “optimistic” checks which could lead to some type mismatches be > > reported statically, but some will be reported dynamically. > > > > > > > > So the static typing feature means that an implementation supporting > > it is supposed to raise an error when the static analysis can > > determine that an expression _may_ raise an error at runtime. > > > > > > > > Best regards > > > > Michael > > > > > > > > From: www-ql-request@w3.org [mailto:www-ql-request@w3.org] On Behalf > > Of Xavier Franc > > Sent: Monday, January 18, 2010 2:15 PM > > To: www-ql@w3.org > > Subject: Static Typing in XQ Update Test Suite > > > > > > > > > > Andrew Eisenberg wrote: > > > > > > > > We are still looking for implementations that support the > > Update Facility Static Typing Feature and implementations that support > > XQueryX. We'd like to encourage implementors of these features to submit > > their results to us, so that we can advance XQuery Update Facility to W3C > > Recommendation. > > > > > > Dear Andrew, > > > > contemplating the test group "Update Facility Static Typing > > Feature", > > I think there are some reasons why no implementations so far can > > pass the related tests: > > IMHO, there are no more than 10 tests in 27 that really belong to > > this category and are correct. > > > > As far as I understand the static typing feature, an implementation > > supporting it is supposed to raise an error when the static analysis > > can determine that an expression will certainly raise an error at > > runtime: > > [XQ 5.2.3 Static Typing Feature] > > If an implementation does not support the Static Typing Feature, > > but can nevertheless determine during the static analysis phase that > > an expression, if evaluated, will necessarily raise a type error at > > run time, the implementation MAY raise that error during the static > > analysis phase. > > It is also stated [XQ 2.2.3.1 Static Analysis Phase]: > > [Definition: The static analysis phase depends on the expression > > itself and on the static context. The static analysis phase does not > > depend on input data (other than schemas).] > > > > * tests of the kind "ST is too vague" are wrong IMO: > > a static type node()* can perfectly correspond to correct node > > types at runtime. > > * tests of the kind "ST of Target/Source has cardinality greater > > than one" > > - either involve the knowledge of input data (through > > $input-context), > > - or assume that the path-expression will always return several > > nodes, > > which cannot be asserted during static analysis (and BTW it > > returns exactly one node). > > * Test "stf-insert-02: insert: ST of SourceExpr has non-attribute > > before attribute.": > > although this error can indeed be detected by static analysis, > > that seems > > far too complex, and looks more like "formal proof of program" > > than > > like what a compiler can achieve. > > > > Best regards > > > > > > -- Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/ Pictures from old books: http://fromoldbooks.org/ Ankh: irc.sorcery.net irc.gnome.org www.advogato.org
Received on Tuesday, 26 January 2010 16:39:34 UTC