次の機能があるとします。
(define (g x) (f x))
(define (f x) (+ 1 x))
別g
の で一時的に呼び出したい。たとえば、次のようなものです。 f
(let ((f (lambda (x) (+ 2 x))))
(g 5))
上記のコードを 7 に評価したいのですが、そうではありません。代わりに、のスコープ外g
で を呼び出すため、 6 と評価されます。f
let
g
の内部で再定義せlet
ずに、また の定義の本体全体をインライン化せずにこれを行う方法はありg
ますlet
か? (実際にg
は、非常に大きく複雑な関数になる場合があります)。