[Bug 29277] [XP31] Evaluating function calls does not mention evaluation of dynamic or static function calls that have no FunctionBody

https://www.w3.org/Bugs/Public/show_bug.cgi?id=29277

--- Comment #6 from Abel Braaksma <abel.braaksma@xs4all.nl> ---
> Again, a horrible sentence (especially the use of "associated to"). The 
> antecedent of the last "it" is unclear: it is referring to the 
> NamedFunctionRef being evaluated, not to the function being evaluated. 

I have to agree, because I did read that sentence until "implementation
dependent", after which I thought "oh, this does not apply". 

<quote>
...then the implementation of the function returned by the NamedFunctionRef is
associated with the static context of this NamedFunctionRef expression and to
the dynamic context in which it is currently being evaluated.
</quote>

Thanks for clarifying this, I would've thought, and still think, "it" applies
to the subject in that sentence. Simplified:

"then the X returned by Y is associated with SC and to the DC in which it is
evaluated."

In my English-to-Dutch translation in my head, there is no way that "it" can
refer to something other than X, i.e. the function, not the NamedFunctionRef.

I agree to your suggestions for improving the text. Though I still think it is
probably a good idea to termdef the "built-in functions" and to add a Note that
this applies to all externally defined functions incl. FO31, XQ31, XSLT30 and
that standards built on XPath are not allowed to deviate from this (are they?).

Another suggestion is to include the word *closure* in the text, as that is a
commonly well understood term. Something like "the dc and sc of the
NamedFunctionRef expression become part of the closure of the function
implementation".

Final note on function types, because I still feel like we are missing
something. 

<quote>
If F's implementation is implementation-dependent (e.g., it is a built-in
function or external function or host-language-dependent function, or a partial
application of such a function):
</quote>

Let me try:
* fn:name is a built-in function
* fn:current is a host-language-dependent function
* ex:network-address (extension function in processor) is an external function
* f:filter-nodes (stylesheet function) is ???
* function f() { 'test' } is a FunctionBody function

In your new text you suggest "built-in" functions, but I'm uncertain whether
that means all of the above, or part of it. If it means all of it (the last one
has no name, does not apply), then the "in the case of" can be removed as the
subset is already the whole set.

In other words is the set of functions referred to by §3.1.5.1 item 5.b.i the
same as the set of functions referred to by §3.1.6?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Thursday, 12 November 2015 10:31:21 UTC