Yコンビネータをcommonlispで http://d.hatena.ne.jp/sumii/20051203/1133575324 にschemeで買いてあったから勉強のついでにcommonlispに書き直す。 難しいなぁ。。。 ;;再帰している関数 ;; (defun fun(n) ;; (if (zerop n) ;; 0 ;; (+ n (fun (1- n))))) ;; CL-USER> (fun 5) ;; 15 ;;右辺からfunを消したい ;; (defun make-fun(f) ;; (lambda (n) ;; (if (zerop n) ;; 0 ;; (+ n (funcall f (1- n)))))) ;; CL-USER> (funcall (make-fun #'fun) 5) ;; 15 ;;funではなくmake-funを呼び出すようにしてみる ;

