- From: <bugzilla@jessica.w3.org>
- Date: Thu, 16 Jul 2015 20:32:29 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=27059
--- Comment #4 from John Snelson <john.snelson@marklogic.com> ---
An example of function coercion against a map item to include in the spec:
let $m := map {
"Monday" : true(),
"Wednesday" : true(),
"Friday" : true(),
"Saturday" : false(),
"Sunday" : false()
}
let $days := ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Sunday")
return fn:filter($days,$m)
The map $m has a function signature of function(xs:anyAtomicType) as item()*.
When the fn:filter() function is called, the following occurs to the fun\
ction:
1. The map $m is treated as function ($f) equivalent to map:get($m,?).
2. The function conversion rules result in applying function coercion to $f,
wrapping $f in a new function ($p) with the signature function(item()) as\
xs:boolean.
3. $p is matched against the SequenceType of function(item()) as xs:boolean,
and succeeds.
4. When $p is invoked by fn:filter(), function conversion and SequenceType
matching rules are applied to the argument, resulting in an item() value ($\
a) or a type error.
5. $f is invoked with $a, which returns an xs:boolean or the empty sequence.
6. $p applies function conversion rules and SequenceType matching to the result
sequence from $f. When the result is an xs:boolean the SequenceType ma\
tching succeeds. When it is an empty sequence (such as when $m does not contain
a key for "Tuesday"), SequenceType matching results in a type error.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Thursday, 16 July 2015 20:32:33 UTC