私は最近、XSLT 1.0 で関数型プログラミング構造を使用することについて学んでいます。だから私は FXSL についてもっと学んでいて、foldl についていくつか質問があります。
<xsl:template name = "foldl" >
<xsl:param name = "pFunc" select = "/.." />
<xsl:param name = "pA0" />
<xsl:param name = "pList" select = "/.." />
<xsl:choose>
<xsl:when test = "not($pList)" >
<xsl:copy-of select = "$pA0" />
</xsl:when>
<xsl:otherwise>
<xsl:variable name = "vFunResult" >
<xsl:apply-templates select = "$pFunc[1]" >
<xsl:with-param name = "arg0" select = "$pFunc[position() > 1]" />
<xsl:with-param name = "arg1" select = "$pA0" />
<xsl:with-param name = "arg2" select = "$pList[1]" />
</xsl:apply-templates>
</xsl:variable>
<xsl:call-template name = "foldl" >
<xsl:with-param name = "pFunc" select = "$pFunc" />
<xsl:with-param name = "pList" select = "$pList[position() > 1]" />
<xsl:with-param name = "pA0" select = "$vFunResult" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
私の質問は、vFunResult
変数に関係しています。$pFunc
テンプレートを使用して「関数」アプリケーションを作成していることが[1]
わかりますが、なぜセレクターであり、テンプレート呼び出しの arg0 が に設定されているの$pFunc[position > 0]
ですか? に複数の「関数」を渡していると予想されます$pFunc
かfoldl
?
私が見たすべての関数型プログラミングの例では、パラメーター f はリストとしてではなく単独で渡されます。この Haskell 部分関数定義: foldl f z (x:xs) = foldl f (f z x) xs