なるほど,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個だけ取り出している。