- From: Dimitre Novatchev <dnovatchev@gmail.com>
- Date: Tue, 6 May 2025 15:59:22 -0700
- To: Joel Kalvesmaki <kalvesmaki@gmail.com>
- Cc: Michael Kay <mike@saxonica.com>, Norm Tovey-Walsh <norm@saxonica.com>, public-xslt-40@w3.org
- Message-ID: <CAK4KnZfasYjvFVUk5DoK+6hS=Do6gwq-H8DqycjZdLWdNoO_VA@mail.gmail.com>
And Joel, it is explicitly said in the newly published text of the Spec that: <changes> <change issue="1240">A dynamic function call can now be applied to a sequence of functions, and in particular *to an empty sequence*. This makes it easier to chain a sequence of calls.</change> </changes> Not "tangential", but intentional. [image: image.png] On Tue, May 6, 2025 at 3:55 PM Dimitre Novatchev <dnovatchev@gmail.com> wrote: > > PR 1975 nowhere removes any errors. It merely allows a singleton to be > a sequence. The speaker did not need to address the question you raised, > because it was irrelevant. > > No it was not irrelevant. > > The presenter even mentioned starting his presentation today, that this PR > was quite controversial, as he was well-acquainted with the problem and the > objections to it, expressed in comments. > Also, in the proposed text it was explicitly stated that invoking a > method/function off an empty sequence will not raise an error - and that > this was raising an error in XPath 3.1. > > The presenter himself created this issue: "Dynamic function call applied > to empty sequence #1972" https://github.com/qt4cg/qtspecs/issues/1972 > > There he explicitly proposed that a method/function could be invoked off > an empty sequence, and that, while in XPath 3.1 this results in raising an > error, "it would be more useful" not to raise such error in XPath 4. Here > is a full quote: > > "The rules for dynamic function calls (xpath, ยง4.5.3.1) state that $F($X) raises > a type error if $F is an empty sequence. > I think it would be more useful if both map:get() and dynamic function > calls were changed to have "empty if empty" semantics." > > And the presenter himself acknowledged that "the people should have known > about this issue" if they read well the PR. This he thought was an excuse > for not mentioning the problem at all. He said in his response above: > > "Our modus operandi is for detailed technical discussions to take place in > writing before we take a decision in a meeting. *There is no need for all > the technical arguments to be repeated verbally* in the meeting ..." > > Your reaction simply proves that the participants were not aware at all of > the problem... > > Thanks, > Dimittre. > > > On Tue, May 6, 2025 at 2:55 PM Joel Kalvesmaki <kalvesmaki@gmail.com> > wrote: > >> Dimitre, your point is tangential to the PR that was accepted today. PR >> 1975 nowhere removes any errors. It merely allows a singleton to be a >> sequence. The speaker did not need to address the question you raised, >> because it was irrelevant. >> >> Repeating your claims, with bluster and without argument, does not serve >> your cause. >> >> Best wishes, >> >> Joel >> >> On Tue, May 6, 2025 at 2:46 PM Dimitre Novatchev <dnovatchev@gmail.com> >> wrote: >> >>> > Our modus operandi is for detailed technical discussions to take place >>> in writing before we take a decision in a meeting. >>> > There is no need for all the technical arguments to be repeated >>> verbally in the meeting - it is assumed that attendees >>> > have prepared for the meeting by reading the discussion thread. >>> >>> The fact remains that this most serious issue was not pointed out by the >>> presenter - and not out of forgetfulness. >>> >>> Let us be well aware that we are being manipulated - even when this is >>> being justified with "good intentions and logistics". >>> >>> I still hope that we are going to address the issue and find a >>> satisfactory solution - contrary to the attempt to hide it. >>> >>> Dimitre Novatchev, >>> >>> On Tue, May 6, 2025 at 10:54 AM Michael Kay <mike@saxonica.com> wrote: >>> >>>> I think we are all well aware that the handling of empty sequences in >>>> path expressions is a mixed blessing: it means that $BOOK / AUTHOR / NAME >>>> returns the names of all the authors of the book whether the book has 0, 1, >>>> or many authors; but at the same time it means that if the element name >>>> AUTHOR is misspelled, no error is reported. >>>> >>>> In 3.1 we reproduced this behaviour with lookup of fields in records >>>> ($BOOK ? AUTHOR ? NAME), and this PR extended this to lookup with methods >>>> ($BOOK ? AUTHOR() ? NAME()). The construct $BOOK ! AUTHOR ! NAME also >>>> follows the same pattern - emptiness is propagated down the path, rather >>>> than being treated as erroneous. Consistency is important for usability, >>>> and this handling of hierarchic selection paths is absolutely intrinsic to >>>> the style and character of XPath as a language. >>>> >>>> Since it is not an error for a book to have no authors, there is no >>>> "swallowing" of any error - the expression is not erroneous so there is no >>>> error to swallow, and this applies to all these cases. >>>> >>>> The corrollory that XPath doesn't detect misspelled selectors in a path >>>> is indeed a serious problem that costs developers hours of effort. This was >>>> recognized soon after XPath 1.0 and the introduction of schema awareness >>>> was an attempt to solve it, with mixed success. I think the functions such >>>> as exactly-one() were also introduced with this in mind; the idea was that >>>> if you expected a book to have exactly one author, you could write >>>> $BOOK/exactly-one(AUTHOR)/exactly-one(NAME). But hardly anyone does so; >>>> people will always write the code that is easiest to write, rather than the >>>> code that is most robust. >>>> >>>> But the rule about a dynamic function call requiring a singleton wasn't >>>> really a solution to that problem, it only detected it in a very small >>>> minority of cases, and it did so more by accident than by design. We >>>> should look for better solutions to that problem, which is what issue 1979 >>>> strives to do. >>>> >>>> Our modus operandi is for detailed technical discussions to take place >>>> in writing before we take a decision in a meeting. There is no need for all >>>> the technical arguments to be repeated verbally in the meeting - it is >>>> assumed that attendees have prepared for the meeting by reading the >>>> discussion thread. >>>> >>>> Michael Kay >>>> >>>> >>>> >>> >>> -- >>> Cheers, >>> Dimitre Novatchev >>> --------------------------------------- >>> Truly great madness cannot be achieved without significant intelligence. >>> --------------------------------------- >>> To invent, you need a good imagination and a pile of junk >>> ------------------------------------- >>> Never fight an inanimate object >>> ------------------------------------- >>> To avoid situations in which you might make mistakes may be the >>> biggest mistake of all >>> ------------------------------------ >>> Quality means doing it right when no one is looking. >>> ------------------------------------- >>> You've achieved success in your field when you don't know whether what >>> you're doing is work or play >>> ------------------------------------- >>> To achieve the impossible dream, try going to sleep. >>> ------------------------------------- >>> Facts do not cease to exist because they are ignored. >>> ------------------------------------- >>> Typing monkeys will write all Shakespeare's works in 200yrs.Will they >>> write all patents, too? :) >>> ------------------------------------- >>> Sanity is madness put to good use. >>> ------------------------------------- >>> I finally figured out the only reason to be alive is to enjoy it. >>> >>> >> >> >> -- >> Joel Kalvesmaki >> kalvesmaki.com >> > > > -- > Cheers, > Dimitre Novatchev > --------------------------------------- > Truly great madness cannot be achieved without significant intelligence. > --------------------------------------- > To invent, you need a good imagination and a pile of junk > ------------------------------------- > Never fight an inanimate object > ------------------------------------- > To avoid situations in which you might make mistakes may be the > biggest mistake of all > ------------------------------------ > Quality means doing it right when no one is looking. > ------------------------------------- > You've achieved success in your field when you don't know whether what > you're doing is work or play > ------------------------------------- > To achieve the impossible dream, try going to sleep. > ------------------------------------- > Facts do not cease to exist because they are ignored. > ------------------------------------- > Typing monkeys will write all Shakespeare's works in 200yrs.Will they > write all patents, too? :) > ------------------------------------- > Sanity is madness put to good use. > ------------------------------------- > I finally figured out the only reason to be alive is to enjoy it. > > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- To achieve the impossible dream, try going to sleep. ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- Sanity is madness put to good use. ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
Attachments
- image/png attachment: image.png
Received on Tuesday, 6 May 2025 22:59:39 UTC