4

のドキュメントに示されている例unfoldr :: (b -> Maybe (a, b)) -> b -> [a]:

unfoldr (\b -> if b == 0 then Nothing else Just (b, b-1)) 10

冗長ペアで簡単に書くことができます:

unfoldr (\b -> if b == 1 then Nothing else Just (b-1, b-1)) 11

unfoldrペアは何のために必要(a,b)ですか?その型が ではないのはなぜ(a -> Maybe a) -> a -> [a]ですか?

4

2 に答える 2

13

型を持つ関数

(a -> Maybe a) -> a -> [a]

出力リスト要素のタイプを、生成プロセスを通過する状態と同じになるように制限します。unfoldr独立したタイプの状態を使用できるという点で、より一般的です。

于 2016-03-02T15:27:19.363 に答える