質問: XSLT 2.0はxsl:functionで2乗を求める関数を次のように書くことができます. ``` ``` これはXSLT 3.0ではインラインの無名関数を使って次のように書くことができます. ``` ``` xのy乗を求めるような次の例では再帰を使用します. ``` ``` ではこのxのy乗を求める関数をインラインで書くにはどうしたらできるのでしょうか?無名関数なので、自分自身に再帰することはできるのでしょうか? よろしくお願いします.
回答: Yコンビネータと呼ばれる高階関数("別の関数"を引数にとる/戻り値として返す関数)を使うと、無名関数の再帰呼出のようなことができます。下記実装は厳密には"Zコンビネータ"と呼ぶそうです。 ``` ``` 上記実装では を参考にしました。(私自身では説明できないので、解説はリンク先に譲ります)