假设我有以下功能:
(define (g x) (f x))
(define (f x) (+ 1 x))
我想暂时g用不同 f的电话。例如,像这样:
(let ((f (lambda (x) (+ 2 x))))
(g 5))
我希望上面的代码评估为 7,但事实并非如此。相反,它的计算结果为 6,因为g调用了.f let
有没有一种方法可以做到这一点,而无需g在 内部重新定义,并且无需内联in 中let定义的整个主体?(在实践中,可能是一个非常庞大、复杂的函数)。gletg