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(_dot_)mukul(_at_)gmail(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Hi Mike,
On Thu, Mar 7, 2019 at 8:49 PM Michael Kay mike(_at_)saxonica(_dot_)com
<mailto:mike(_at_)saxonica(_dot_)com>
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com
<mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>> 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 <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--