[Haskell]フィボナッチベンチ、その頃 Haskell は・・・。

Haskell Add comments

恒例のフィボナッチベンチで V8 と Smalltalk、Ruby、Python、Scheme とを戦わせてみるにHaskellがいないではないか!ってことで、やってみた。(やってからブログ書く暇がなくて、かなり乗り遅れてるけど)

gabu@ubuntu-vm:~/haskell/fib$ time ./fib 39
63245986

real	0m0.019s
user	0m0.000s
sys	0m0.012s

0.019秒きたーーー。

ソースはこちら。

import System

fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)

main = do
  args <- getArgs
  print $ fibonacci !! ((read $ head args) - 1)

List の index の関係で マイナス1してるのがださいけど、こんなもんですかねぇ。

フィボナッチ数列の作り方は、フィボナッチ数列 - Haskell はスケるよから頂きました。読んでも意味が分かりません。。。誰か解説プリーズ。

2 Responses to “[Haskell]フィボナッチベンチ、その頃 Haskell は・・・。”

  1. NEGI Says:

    (メールアドレスはダミーです。)
    ocamlではどうかと。。。
    やってる人居ましたね。
    http://d.hatena.ne.jp/komamitsu/20080905/1220628693
    漠然とhaskellよりocamlの方が早いんじゃないかと思ってたけど、
    違いましたね。
    自分でもやってみたら、ocamlはネイティヴでも1.3でした。
    haskellは、0.011。。。

  2. Gabu Says:

    haskellでも(fib (n - 1)) + (fib (n - 2))っぽく書くと遅くなると思いますよ。遅延評価と(元ネタさんの)リストの作り方のアイディアが素晴らしいですね。

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン