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とかがわかりやすいかな