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のまま書けるんだっけ。