- From: Josh Spiegel <josh.spiegel@oracle.com>
- Date: Thu, 10 Sep 2015 08:53:20 -0700 (PDT)
- To: Michael Kay <mike@saxonica.com>
- Cc: "Robie, Jonathan" <jonathan.robie@emc.com>, Abel Braaksma <abel.braaksma@xs4all.nl>, Public Joint XSLT XQuery XPath <public-xsl-query@w3.org>
> On Sep 10, 2015, at 8:28 AM, Michael Kay <mike@saxonica.com> wrote:
>
> I’ve always read it as a kind of macro: (A => f(X, Y)) is translated during expression parsing to f(A, X, Y).
Me too. So Abel’s example:
> let $a := concat('hello', ?)
> let $b := concat('world', ?)
> return "!" => ($a, $b)()
Is equivalent to:
… return ($a, $b)(“!”)
And would raise an error:
"If FC is a dynamic function call: FC's base expression is evaluated with respect to SC and DC. If this yields a sequence consisting of a single function with the same arity as the arity of the ArgumentList, let F denote that function. Otherwise, a type error is raised [err:XPTY0004]."
> I think it would be clearer to specify it by means of a syntactic transformation:
>
> Given a UnaryExpr U, an ArrowFunctionSpecifier F, and a ArgumentList (A, B, C…), the expression U => F(A, B, C…) is equivalent to the expression F(U, A, B, C…)
>
Makes sense.
> “If $s is a sequence and f() is a function”. Are we talking about expressions, or about the values of expressions?
I like these examples though. Maybe this description of $s and f() isn’t even necessary. It could just say:
“For example, $s=>f() is equivalent to f($s), and $s=>f($j) is equivalent to f($s, $j)."
Thanks,
Josh
Received on Thursday, 10 September 2015 15:53:55 UTC