ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

9章の型と型クラスあたりで挫折したのでモナドにはたどりつけず。。。
型変数はJavaと同じ感じだね。たらい回し関数の処理速度はすごいね。

main = print (tarai 20 10 5)

tarai :: Int -> Int -> Int -> Int
tarai x y z = if x <= y then y
                        else tarai (tarai (x-1) y z)
                                   (tarai (y-1) z x)
                                   (tarai (z-1) x y)

実行結果

$ time ./takh 20 10 5
20

real 0m0.003s
user 0m0.001s
sys 0m0.002s

404 Blog Not Found:たらいを回すならHaskellにあるCの例だと約25秒かかる。

$ time ./tak 20 10 5
tak(20, 10, 5) = 20

real 0m24.774s
user 0m24.578s
sys 0m0.067s