繁体   English   中英

球拍 lambda 顺序解释

[英]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是一个具有两个参数Vh的函数,其主体为:

((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)的步骤如下:

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

  2. 将此值传递给函数 f; 结果是 10.016548388032545

  3. 这是初始调用返回的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM