不動点オペレータと関数のメモ化で大いに遊ぶのが流行っているみたいで(k.inaba さんの発端の記事、結城浩さんによるリンク集)、楽しそうなのでひっそり書いてみます。Common Lisp で、というか xyzzy でちょこちょこしてみます。 まずは普通に。 とりあえず不動点オペレータを教科書的に書いてみます。funcall が健全な精神に対して極めて有害そうであることがよく判ります。 ;;;figure.1 (defun %fib (f) #'(lambda (x) (if (<= x 1) 1 (+ (funcall f (- x 1)) (funcall f (- x 2)))))) (defun fix (f) (funcall #'(lambda (g) (funcall g g)) #'(lambda (h) #'(lambda (x) (funcall (funcall f