- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 31 Oct 2007 02:28:19 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4841 ------- Comment #15 from jmdyck@ibiblio.org 2007-10-31 02:28 ------- (In reply to comment #12) > The changes proposed fail to provide a catch all case, and so the type is not > defined for an argument with quantifier ? for example. Whoops again! You're right, the four moved rules do not cover all cases. > The typing rules could be made simpler (without changing the result) by just > applying the following rules: > > statEnv |- QName of func expands to (FN-URI,"item-at") > statEnv |- Expr : Type quantifier(Type) in { 1, + } > -------------------------------------------------------- > statEnv |- QName(Expr, 1) : prime(Type) > > statEnv |- QName of func expands to (FN-URI,"item-at") > statEnv |- Expr : Type > -------------------------------------------------------- > statEnv |- QName(Expr1, Expr2) : prime(Type) ? An excellent simplification. (I had to do some quantifier-arithmetic to convince myself that, in all cases, the resulting type was the same as currently inferred, but I agree that it is.) > Additionally, the static typing could be improved with the following rule: > statEnv |- QName of func expands to (FN-URI,"item-at") > statEnv |- Expr : Type quantifier(Type) in { 1, + } > -------------------------------------------------------- > statEnv |- QName(Expr1, $last) : prime(Type) In fact, fn:subsequence used to have such a rule, but it was removed in the 20050915 WD and hasn't returned. (See Bug 1728 Comment #7.) My impression is that the removal was a mistake, and I think the rule should be reinstated (for item-at). However, that won't be happening as part of this issue, and probably not as an erratum either.
Received on Wednesday, 31 October 2007 02:28:35 UTC