- From: Dimitre Novatchev <dnovatchev@gmail.com>
- Date: Sat, 5 Dec 2020 15:58:20 -0800
- To: Michael Kay <mike@saxonica.com>
- Cc: Christian GrĂ¼n <cg@basex.org>, "Liam R. E. Quin" <liam@fromoldbooks.org>, public-xslt-40@w3.org
- Message-ID: <CAK4KnZecnD+VCYKbNUJqvLXBAsL5GNoc0TrfiFEFQ1tefCRv-g@mail.gmail.com>
On Sat, Dec 5, 2020 at 3:18 PM Michael Kay <mike@saxonica.com> wrote: > > > On 5 Dec 2020, at 21:01, Dimitre Novatchev <dnovatchev@gmail.com> wrote: > > What about something as simple as this: > > myFunction($arg1 as item()*, $arg2 as xs:integer default: 15, $arg3 as > xs:string default: "Hi") > > > On the declaration side, this is very similar to what I've been proposing > for XSLT - see > https://qt4cg.org/branch/master/xslt-40/Overview-diff.html#xsl-function-name > > The difference is that I proposed this would actually declare three > functions myFunction#1, myFunction#2, and myFunction#3, because it can be > called with 1, 2, or 3 arguments, and because its existence rules out the > existence of any other function with this name and arity 2, 3, or 4. > Actually not! myFunction(/*/name) is not the same as myFunction#1(/*/name) actually myFunction(/*/name) is the same as myFunction#3(?, 15, "Hi")(/*/name) and this is different from myFunction#1(/*/name) So, we can define a one-argument function overload and call it explicitly as: myFunction#1(/*/name) and / or have the different call: myFunction#3(?, 15, "Hi")(/*/name) or, this can be abbreviated: myFunction#3(?)(/*/name) Thanks, Dimitre And I was thinking it purely as a better way of declaring a family of > functions, not as something linked to changes in function call syntax. > > > "*You can also use named arguments instead of positional arguments when > invoking a method. When using named arguments, you specify the parameter > name followed by a colon (":") and the argument. Arguments to the method > can appear in any order, as long as all required arguments are present. *" > > > The main challenge is defining rules for unambiguously binding a function > call to a declared function when there are several declared functions with > the same name. This needs to handle both binding of static function calls > and dynamic references. > > Another detail, particularly for XSLT, is defining the rules for > overriding of functions in other packages. > > Michael Kay > Saxonica > >
Received on Saturday, 5 December 2020 23:58:45 UTC