Re: [xsl] ANN: How to Create XSLT Functions that Manipulate Functions

Subject: Re: [xsl] ANN: How to Create XSLT Functions that Manipulate Functions
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Sat, 25 Sep 2010 12:03:22 -0700
Seems OK as an introduction, however:

1. The function map() is traditionally defined in almost all FP
languages to take as first argument a function that operates on a
*single item* of the sequence -- not on all items.

Therefore, either do not use the name "map" -- to avoid the confusion
with the esatblished meaning of map(), or re-define it:


    <xsl:function name="f:map" as="item()*">
      <xsl:param name="pFun" as="element()"/>
      <xsl:param name="pList1" as="item()*"/>

      <xsl:sequence select=
       "for $this in $pList1 return
          f:apply($pFun, $this)"
      />
    </xsl:function>


2. It is useful to define the function f:apply() --witha at least the
one-argument overload version:

  <xsl:function name="f:apply">
   <xsl:param name="pFunc" as="element()"/>
   <xsl:param name="arg1"/>

    <xsl:apply-templates select="$pFunc" mode="f:FXSL">
      <xsl:with-param name="arg1" select="$arg1"/>
    </xsl:apply-templates>
  </xsl:function>


--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play



On Sat, Sep 25, 2010 at 11:37 AM, Costello, Roger L. <costello@xxxxxxxxx>
wrote:
>
> Hi Folks,
>
> I wrote a short article that shows, step by step, how to create XSLT
functions that manipulate functions (i.e., how to create higher-order
functions):
>
>
> Introduction
>
> A powerful programming technique is to create functions that can accept
functions as arguments or return functions as values. Functions that
manipulate functions are called higher-order functions. This article shows how
to implement higher-order functions using XSLT 2.0.
>
> More ...
>
>
http://www.xfront.com/higher-order-functions-in-XSLT/How-to-Create-XSLT-Funct
ions-that-Manipulate-Functions.pdf
>
> /Roger

Current Thread