「お気楽 OCaml プログラミング入門」に色んな言語のたらいまわし関数の結果が掲載されていて、OCamlがCよりも速い驚異的な数値を叩き出していました。 Haskell がありませんでしたので比較してみました。 C #include <stdio.h> int tak(int x, int y, int z){ if (x <= y){ return z; }else{ tak(tak((x - 1),y,z), tak((y - 1),z,x), tak((z - 1),x,y)); } } int main(void){ printf("%d\n",tak(18,9,0)); } C は最適化により数値がかなり変わります。 $ time ./ctak 9 real 0m0.133s user 0m0.128s sys 0m0.004s $ gcc -O3 tak.c -o c03ta