- 876 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 15:33:20 ]
- define-macroで失礼。hygienic-macroサパーリ
(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のまま書けるんだっけ。
|

|