展開(unfold)
値から値(リストのことが多い)を生成する
畳み込み(fold)
の双対
unfoldr
fold/unfoldの練習
参考
/mrsekut-book-4274068056/063
#WIP
unfold
/mrsekut-book-4274068056/064
code:hs
unfold :: (t -> Bool) -> (t -> a) -> (t -> t) -> t ->
a
unfold p h t x | p x = []
|otherwise = h x : unfold p h t (t x)
p
終了を判定する述語
Trueの場合に終了する
h
リストの先頭要素を作る関数
t
次の再帰に渡す値を作る
展開して残りの部分を作るための種を与える
x
値
The Under-Appreciated Unfold
https://www.researchgate.net/publication/2609651_The_Under-Appreciated_Unfold
unfoldについての
論文
『プログラミングHaskell』
7章に載っているらしい
https://kazu-yamamoto.hatenablog.jp/entry/20110913/1315905876
https://sirocco.hatenadiary.org/entry/20111115/1321307810
https://sirocco.hatenadiary.org/entry/20130416/1366121105
https://kseo.github.io/posts/2016-12-12-unfold-and-fold.html
https://tnomura9.exblog.jp/23546898/
https://takatoh.hatenablog.com/entry/20080321/unfold
https://minazoko.hatenadiary.org/entry/20110919/1316437566
https://lesguillemets.github.io/blog/2015/08/10/haskell-unfoldr.html
https://qiita.com/Tatsuki-I/items/66d1f5186348aaa9b537
https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-List.html#g:9
https://tnomura9.exblog.jp/27175668/
https://tnomura9.exblog.jp/14446754/