質問: 畳み込み関数に対しては`fold`,`reduce`,`inject`等、プログラミング言語や引数の型ごとに色々な名前が使われていますが、これと双対な関数はどのような名前を持つのでしょうか?`fold`には`unfold`が対応する(F#,Haskell)のですが`reduce`、`inject`に対応する関数の名前が分かりません。 このような関数を探したり、自前で定義する際に必要だと思い質問しました。 **補足:unfoldの仕様** F#の`Seq.unfold`は関数`f`と初期状態`s`を引数に取り、シーケンスを返す関数です。`f`は現在の状態からシーケンスの要素と次の状態のタプルを`option`として返す関数です。`f`が`None`を返すことで結果のシーケンスの生成を打ち切ります。 Haskellの`unfoldr`も同様です。
回答: 公式ライブラリに含まれていないのだとしたら、多分特にそんなものの名前で、標準的なものはないのではないか、と考えています。特に、自分の把握している範囲だと、 reduce -> python inject -> ruby であって、F# や Haskell に比べれば関数型色が薄いので、そうなっているのではないかと。 最近だと Java の Stream が unfold 相当の機能を実装した様子ですが、 Stream.iterate なのでライブラリの実装次第で割となんでもありなのではないでしょうか。