- From: Reece Dunn <msclrhd@googlemail.com>
- Date: Tue, 8 Dec 2020 17:34:21 +0000
- To: Dimitre Novatchev <dnovatchev@gmail.com>
- Cc: Michael Kay <mike@saxonica.com>, public-xslt-40@w3.org
- Message-ID: <CAGdtn26Ufqf0o-r+qHV-QZp3t4poV613ifGUF8iw6CryimLF_Q@mail.gmail.com>
On Tue, 8 Dec 2020 at 16:50, Dimitre Novatchev <dnovatchev@gmail.com> wrote: > > > On Tue, Dec 8, 2020 at 8:36 AM Michael Kay <mike@saxonica.com> wrote: > > >> As other people asked, I don't understand what "virtual fixed-arity" >> function means. Please, elaborate and provide an example. >> >> >> I hope my explanations to Norm Tovey-Walsh and Reece Dunn explained the >> general idea. Obviously the detailed spec remains to be written. >> > > > Nope, maybe I am still not fully awake. The word that halts my thinking > process is "virtual". Seems like if we accept arity to have two components > this all "virtuality" will be unnecessary? Extra rope to hang themselves? > :) > A better description/definition for this may be something like... A function reference f#n to a bound- or array-variadic function is equivalent to creating an inline function expression with arity n that calls f with the parameters in order. If the arity of the function reference does not fit within the bounds of the variadic function (as described by the rules for calling a variadic function), an XPST#### error is raised. > Example: > fn:format-date#4 is equivalent to function ($a1, $a2, $a3, $a4) { fn:format-date($a1, $a2, $a3, $a4) }. The resulting function reference is not variadic. --- This way, the definition avoids adding new terms that only apply to this proposal where other concepts/terms for those exist elsewhere in the specification. It also allows an implementation to not create an inline function expression if the validation/behaviour is the same -- this is what Michael Kay meant by "virtual fixed-arity" (e.g. an implementation could reference the variadic function directly but use the arity of the function reference for validation, so not create an inline function expression or add a new function to the static context). Kind regards, Reece >> >>> >>> Because in a function call we can reference now any argument by name >> (even a positional argument), we must specify a restriction that the (names >> of the) keys of the map do not clash with the names of the positional >> arguments, or to allow in this case a mechanism for disambiguation, >> something like: >> >> This is why I specified that arguments supplying parameters prior to the >> final map parameter cannot use keywords, they must be specified >> positionally. >> > > This is completely unnecessary, restricting and damaging the completeness > of this unified proposal. > > -10 > > Thanks, > Dimitre > > >> >> Michael Kay >> Saxonica >> >> > > -- > 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. > >
Received on Tuesday, 8 December 2020 17:34:45 UTC