球拍lambda指令解释

球拍lambda指令解释,lambda,racket,Lambda,Racket,如果我理解正确,(vh)是参数,主体是: ((兰姆达(右) (*2Rpi(+Rh))) (sqrt(/V pi h)) 然后我们有lambda(r),参数是(r),主体是: (define povrch-valce (lambda (V h) ((lambda (r) (* 2 r pi (+ r h))) (sqrt (/ V pi h))))) 请解释一下,最后一个尸体是按什么顺序处理的?我不明白(sqrt(/V pi h))是如何首先计算的,即使它是第二个顺序。使用一个编辑器,正确对齐代

如果我理解正确,(vh)是参数,主体是:

((兰姆达(右)
(*2Rpi(+Rh)))
(sqrt(/V pi h))

然后我们有lambda(r),参数是(r),主体是:

(define povrch-valce
(lambda (V h)
((lambda (r)
(* 2 r pi (+ r h)))
(sqrt (/ V pi h)))))

请解释一下,最后一个尸体是按什么顺序处理的?我不明白(sqrt(/V pi h))是如何首先计算的,即使它是第二个顺序。

使用一个编辑器,正确对齐代码,如DrRacket,函数具有以下形式:

(* 2 r pi (+ r h)))
(sqrt (/ V pi h)))))
也就是说,
povrch valce
是一个具有两个参数的函数,
V
h
,其主体是:

(define povrch-valce
  (lambda (V h)
    ((lambda (r)
       (* 2 r pi (+ r h)))
     (sqrt (/ V pi h)))))
即(注意两个括号):

其中
f
是功能:

(f (sqrt (/ V pi h)))
这是一个应用于
sqrt
调用结果的函数

因此,类似于
(povrch valce 2 3)
的评估步骤如下:

  • 计算
    (sqrt(/V pi h))
    ;结果是0.46065886596178063

  • 将该值传递给函数f;结果是10.016548388032545

  • 这是初始调用返回的值

  • (f (sqrt (/ V pi h)))
    
    (lambda (r)
      (* 2 r pi (+ r h)))