[英]racket lambda order explanation
(define povrch-valce
(lambda (V h)
((lambda (r)
(* 2 r pi (+ r h)))
(sqrt (/ V pi h)))))
如果我理解正确 (V h) 是参数,主体是: ((lambda (r) ( * 2 r pi (+ rh))) (sqrt (/ V pi h)))
然后我们有 lambda(r),参数是 (r),body 是:
(* 2 r pi (+ r h)))
(sqrt (/ V pi h)))))
有人可以向我解释一下最后一个身体是按什么顺序处理的吗? 我不明白 (sqrt (/ V pi h)) 是如何首先计算的,即使它是第二个。
使用正确对齐代码的编辑器,如 DrRacket,该函数具有以下形式:
(define povrch-valce
(lambda (V h)
((lambda (r)
(* 2 r pi (+ r h)))
(sqrt (/ V pi h)))))
也就是说, povrch-valce
是一个具有两个参数V
和h
的函数,其主体为:
((lambda (r)
(* 2 r pi (+ r h)))
(sqrt (/ V pi h)))))
即(注意两个括号):
(f (sqrt (/ V pi h)))
其中f
是函数:
(lambda (r)
(* 2 r pi (+ r h)))
这是一个应用了sqrt
调用结果的函数。
因此,评估类似(povrch-valce 2 3)
的步骤如下:
计算(sqrt (/ V pi h))
; 结果是 0.46065886596178063
将此值传递给函数 f; 结果是 10.016548388032545
这是初始调用返回的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.