Tiny CLOS on Mosh
IRCで話していたらやる気が出たので Tiny CLOS を動かしてみました。
(define (fib x) (if (= x 0) 1 (* x (fib (- x 1))))) (define-generic gfib) (add-method gfib (make-method (list) (lambda (call-next-method x) (if (= x 0) 1 (* x (gfib (- x 1))))))) (time (bench fib)) (time (bench gfib)) ;=>(bench fib) 44 ;=>(bench gfib) 57250
ぎゃあ 1000倍以上遅い。動くことが分かったので今度深追いしよう。
こういうのって通常はどれくらい遅い場合ならば許容しているんだろう?