((Common Lisp) (Scheme) :Part 15)
■ このスレッドは過去ログ倉庫に格納されています
0876デフォルトの名無しさん
2007/02/10(土) 15:33:20(define-macro (lambda+ args . body)
`(let ((callee #f)) (set! callee (lambda ,args ,@body)) callee))
>function(x) { return x == 0 ? 1 : x * arguments.callee(x - 1); }
(lambda+(x)(if(zero? x)1(* x(callee(- x 1)))))
といったところか。
単なる構文糖衣。
hygienic-macroだとlambda+をlambdaのまま書けるんだっけ。
■ このスレッドは過去ログ倉庫に格納されています