EmacsLisp で let と無名関数のみで再帰
関数をグローバルにしたくない時に。
(let ((fun (lambda (f num &optional result) (if (eq num 0) (or result 1) (funcall f f (- num 1) (* num (or result 1))))))) (funcall fun fun 10)) 3628800
書きながら
Y combinatorとかいう概念があるのを知った。
呼ぶときに fun をひとつで済ませるためって理解でいいのかな。
2007-12-21