unfoldr
from
展開(unfold)
foldr
の双対
Data.List
で提供されている
https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-List.html#g:9
定義
code:hs
unfoldr :: (a -> Maybe (b,a)) -> a ->
b
unfoldr f x = case f x of
Nothing -> []
Just (z,x') -> z : unfoldr f x'
\a -> Maybe (b, a)
の実行を再帰的に行い、Nothingなら停止する
第1引数
\x -> Just (b, a)
だとすると、
x
が与えられた値
b
が先頭要素
a
が次の再帰に渡すリストの残り
fold/unfoldの練習#609cd4571982700000ccd317
とかがわかりやすいかな