[xyzzy:02495] Re: Common の質問
- Subject: [xyzzy:02495] Re: Common の質問
- From: Tetsuya Kamei <kamei@xxxxxxxxxxxx>
- X-mailer: Denshin 8 Go V321.2b5
- X-yzzy-version: 0.0.0.83
Cakeさん、こんにちは。
Mon, 10 May 1999 06:09:59 +0900 の
“[xyzzy:02491] Common の質問”
への返事です.
| Common Lisp で、再帰するラムダ式ってどう書けばいいのでしょうか。
真っ当な答えは既に出ているので、ひねくれたやつを(^^;
Y combinator ってのがありまして、こいつを使うと名無し
関数の再帰呼び出しができます。これは Common に限らず、
クロージャがある言語(いわゆる関数型言語全般)では一般的
な手法(らしい)です。
(defun my-sum (&rest arg)
(funcall ((lambda (y)
((lambda (f) (funcall y #'(lambda (x) (funcall (funcall f f) x))))
#'(lambda (f) (funcall y #'(lambda (x) (funcall (funcall f f) x))))))
#'(lambda (sum)
#'(lambda (L)
(if (null L)
0
(+ (car L) (funcall sum (cdr L)))))))
arg))
--
亀井哲弥(Tetsuya Kamei)
kamei@xxxxxxxxxxxx/JCA00343@xxxxxxxxxxx