Because if $a is an empty sequence (which is the situation on the first call),
then $a[last()] is an empty sequence, and ($x + ()) returns an empty sequence,
not $x.
Michael Kay
Saxonica
> On 8 Mar 2019, at 05:35, Mukul Gandhi gandhi.mukul@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi Mike,
>
> On Thu, Mar 7, 2019 at 8:49 PM Michael Kay mike@xxxxxxxxxxxx
<mailto:mike@xxxxxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx
<mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote:
> Your solution could be rewritten
>
> fold-left($x, (), function($a, $b) {$a, ($a[last()], 0)[1] + $b})
>
> I can confirm that, above expression evaluates correctly.
>
> But why does the following doesn't give the correct answer ?
>
> <xsl:variable name="inpValues" select="(1,2,3,4)" as="xs:integer*"/>
> fold-left($inpValues, (), function($a, $b) {$a, $a[last()] + $b})
>
> i.e why can't $a[last()] work instead your's ($a[last()], 0)[1] ?
>
>
>
>
> --
> Regards,
> Mukul Gandhi
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email <>)
|