[英]Normal order and applicative order evaluation in Scheme
好的,讓我們通過正常評估評估(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, a
和b
的值是2和4。
現在我們需要評估第二個參數, (cons a (cons b '()))
。 因此,由於a
和b
的值是2和4,因此最終結果是(8 2 4)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.