[xquery-talk] Manipulating Maps In Non-Trivial Ways

Michael Kay mike at saxonica.com
Mon Jul 20 11:35:07 PDT 2015


> On 19 Jul 2015, at 22:55, Eliot Kimber <ekimber at contrext.com> wrote:
> 
> Yes, the fold operations are still a bit too clever for my taste--I prefer
> to make my business a logic a little more verbose to clearer, at least to
> me--I don't want to have to think too deeply when I'm programming :-)
> 

Although I say it myself, I think the xsl:iterate instruction in XSLT 3.0, which is essentially syntactic sugar over a fold operation, addresses the readability problem quite well:

> $newKeys => fold-left($m1, function($key, $map) { $map => map:put($key,
> ($map($key), $obj) })

becomes

<xsl:iterate select=“$newKeys”>
  <xsl:param name=“map” select=“$m1”/>
  <xsl:on-completion select=“$map”/>
  <xsl:next-iteration>
    <xsl:with-param name=“map” select=“map:put($map, ., ($map(.), $obj))”/>
  </xsl:next-iteration>
</xsl:iterate>

Michael Kay
Saxonica




More information about the talk mailing list