簡體   English   中英

Scheme中的正常順序和應用順序評估

[英]Normal order and applicative order evaluation in Scheme

對於現場給出的第一個例子: View-Site ,我的理解是正常的順序評估為[6;1;1]而應用順序評估為[6;2;2]

有誰可以確認我的評估?

問候,
darkie

好的,讓我們通過正常評估評估(cons res v)的步驟:

v被定義為(cons a (cons b '())) ,因此我們有cons res (cons a (cons b '())) res被定義為(foo ...) ,所以我們有

(cons (foo (begin (set! a (+ a 1)) a)
           (begin (set! b (* b 2)) b))
      (cons a (cons b ’())))

最后foo xy被定義為(+ xyy) ,所以通過用(begin (set! a (+ a 1)) a)代替x(begin (set! b (* b 2)) b)代替y ,我們得到:

(cons (+ (begin (set! a (+ a 1)) a)
         (begin (set! b (* b 2)) b)
         (begin (set! b (* b 2)) b))
      (cons a (cons b ’())))

現在讓我們來評估一下:為了得到缺點的結果,我們首先需要評估它的第一個參數, (+ ...) 所以我們首先需要評估+的第一個參數,即(begin (set! a (+ a 1)) a) 這個計算結果為2,所以值a現在是2,第一個參數+也是2.現在我們做同樣的事情第二個參數。 這也計算為2並將b設置為2.第三個參數是(begin (set! b (* b 2)) b) ,所以b的值現在是4,第三個參數是4.所以第一個參數cons是結果(+ 2 2 4) ,它是8, ab的值是2和4。

現在我們需要評估第二個參數, (cons a (cons b '())) 因此,由於ab的值是2和4,因此最終結果是(8 2 4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM