haskell-jp / beginners #16 at 2021-06-06 18:16:47 +0900

漸化式として無限等差数列を定義するにはどうしたら良いでしょうか?
ネットで検索した分には次のようなコードを見つけました.
step=3:(map (+ 4) step)

fib = 0 : 1 : zipWith (+) fib (tail fib)

これらは無限等差数列は実現できているのですが,漸化式としての特徴がコードを見てもわかりにくいように感じます.
直前の項にしか依存しないタイプの漸化式は 関数を使えば以下のようにかけるのですがどうでしょう?
init = 3
next n = n + 4

step = iterate next init
上のコードと同じスタイルとして,隣接二項間漸化式も以下のような`iterate2` 関数を作ってあげれば出来そうです
iterate2 f x y = x : iterate2 f y (f x y)

fib = iterate2 (+) 0 1
そんな関数があったんですね
ありがとうございます.