ALGOL68 : たらいまわし関数
そういえば、ALGOLは遅延言語だったっけ、ということで、ALGOLでたらいまわし関数を書いてみる。
Algol 68のインタプリタを見つけたので、それを使ってみることに。
http://www.xs4all.nl/~jmvdveer/algol68g-mk8.1/doc/introduction.html
PROC tarai = (INT x, INT y, INT z) INT: IF x <= y THEN y ELSE tarai ((tarai ((x-1), y, z)) ,(tarai ((y-1), z, x)) ,(tarai ((z-1), x, y))) FI; print (tarai (10, 5, 0))
結果。
$ time a68g test.a68 +10 real 0m1.630s user 0m0.030s sys 0m0.030s
あれ、あまり速くないぞ。しかも、「tarai (12,6,0)」では返ってこない。
なんか、使い方を間違ってるのかなぁ。
-
-
- -
-
あ、メモしないからダメなのか。