2019年1月20日のブックマーク (1件)

  • Haskellでフィボナッチ数列 〜Haskellで非実用的なコードを書いて悦に入るのはやめろ〜 - Qiita

    -- 素朴なコード fib :: Int -> Integer fib 0 = 0 fib 1 = 1 fib n = fib (n - 2) + fib (n - 1) 数学的な定義をそのまま書き下した、Haskellらしい美しいコードですね! ……なーんて感想を抱いた人はHaskell初心者です。計算機で動かすコードを「数学的な美しさ」で語ってどうするんですか??? 美しいバラにはトゲがあるように、美しいHaskellコードには罠があります。 この「素朴なコード」は非常に遅く、実用に耐えません。(この素朴なコードの出番があるとしたら「遅いコードの例」としてでしょう) 素朴なコードの問題点 例として、「素朴なコード」で fib 4 を計算してみましょう。 fib 4 = fib 2 + fib 3 = (fib 0 + fib 1) + fib 3 = (0 + fib 1) + fib

    Haskellでフィボナッチ数列 〜Haskellで非実用的なコードを書いて悦に入るのはやめろ〜 - Qiita
    sasa2718
    sasa2718 2019/01/20
    n>100のフィボナッチ数を求めたい状況が想像できない