unfold

2008年3月21日
1 分

なるほど,unfold ってこういうふうに使えるのか。  cf. ZOETROPEの日記 - Foundations of F#を読む(3) Haskellでやってみる。

*Main> take 10 $ Data.List.unfoldr (\(n0,n1) -> Just (n0, (n1, n0+n1))) (1, 1)
[1,1,2,3,5,8,13,21,34,55]

unfoldr に与える関数は b -> Maybe (a, b) 型で,Nothing が返ると終端になるらしい。だから上の例では無限リストになって,最初の10個だけ取り出している。