簡體   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