私はHaskellを学び始めたばかりで、演習として、フィボナッチ数が合計されるプロジェクトオイラー問題に入りました。私の現在の方法はこの関数で、次の要素で新しいリストを作成します。
fib :: (Integral a) => [a] -> [a]
fib xs@(x1:x2:_) = (x1+x2) : xs
結果に関数を再適用する関数を見つけましたiterate
。ただし、結果はリストのリストになります[[2,1],[3,2,1],[5,3,2,1],..]
。iterate
中間結果に興味がない場合の代替手段は何ですか?takeWhile
最後に生成された番号の条件でを実行したいと思います。これはそれについて完全に考える間違った方法ですか?
(私はフィボナッチ数列を生成するためのより良い/より短い/より良い方法を見てきました、それで私は実際にfib
関数に関するフィードバックを探していません-しかし私はそれを機能させたいです、次善の方法かどうか)