(define (deriv-squared f ) (proc (deriv f))) 和 (define deriv-squared (proc deriv)) 有什么区别?
What is the difference between (define (deriv-squared f ) (proc (deriv f))) and (define deriv-squared (proc deriv))?
我作业中的代码没有错误:
(define (deriv-squared f)
(square-a-procedure (deriv f)))
但是当我如下定义它时,它不评估并说:"deriv as undefined" 即使我定义它。两种定义有什么区别?
(define deriv-squared (square-a-procedure deriv))
变量在被引用(使用)之前需要有一个绑定。
如果你有
(define deriv-squared (square-a-procedure deriv))
然后 (square-a-procedure deriv)
被评估和结果值
被赋予名称 deriv-squared
。在计算 (square-a-procedure deriv)
期间,查找 deriv
的值。因此:deriv
的定义必须放在deriv-squared
.
的定义之前
(我的猜测是您将 deriv
的定义放在源文件的更下方。)
现在为什么你的第一个定义有效?
(define (deriv-squared f) (square-a-procedure (deriv f)))
这是以下简称:
(define deriv-squared
(lambda (f)
(square-a-procedure (deriv f))))
此处 (lambda (f) (square-a-procedure (deriv f))))
评估为一个过程。
但是 deriv
在使用该过程之前不会被引用。因此,如果在使用 deriv-squared
之前定义了 deriv
,则一切正常。
我作业中的代码没有错误:
(define (deriv-squared f)
(square-a-procedure (deriv f)))
但是当我如下定义它时,它不评估并说:"deriv as undefined" 即使我定义它。两种定义有什么区别?
(define deriv-squared (square-a-procedure deriv))
变量在被引用(使用)之前需要有一个绑定。
如果你有
(define deriv-squared (square-a-procedure deriv))
然后 (square-a-procedure deriv)
被评估和结果值
被赋予名称 deriv-squared
。在计算 (square-a-procedure deriv)
期间,查找 deriv
的值。因此:deriv
的定义必须放在deriv-squared
.
(我的猜测是您将 deriv
的定义放在源文件的更下方。)
现在为什么你的第一个定义有效?
(define (deriv-squared f) (square-a-procedure (deriv f)))
这是以下简称:
(define deriv-squared
(lambda (f)
(square-a-procedure (deriv f))))
此处 (lambda (f) (square-a-procedure (deriv f))))
评估为一个过程。
但是 deriv
在使用该过程之前不会被引用。因此,如果在使用 deriv-squared
之前定义了 deriv
,则一切正常。