[英]Evaluation order for the expression ((lambda (x) (* x 2)) (+ 3 1))?
一種
((lambda (x) (* x 2)) (+ 3 1))
((lambda (x) (* x 2)) 4)
(* 4 2)
8
乙
((lambda (x) (* x 2)) (+ 3 1))
(* (+ 3 1) 2)
(* 4 2)
8
我猜有2個版本。 但我不確定哪一個是正確的。
第二個使用 SICP 所說的替換。 這不是真正的 lisps 所做的,它在第 1 章中被描述為一個學習練習。一旦引入了像 let get 這樣的特殊形式,這將不起作用。
第一個使用應用順序,是像球拍這樣的真正方案實現。 它計算 lambda,然后計算以下表達式,然后將 lambda 產生的函數應用於計算結果 (+ 3 1)。
如果我們要了解流程以及我們如何控制它們,那么我們必須從這個過程的機制到這些流程的行為方式進行映射。 我們將擁有的是一個正式的或半正式的機械模型,您可以從中了解機器實際上如何在原則上做到這一點。 真機是否真的做到了我要告訴你的,此刻完全無關緊要。
事實上,這是一個工程模型,就像[對於]電阻器,我們寫下一個模型 V = IR——它大約是真的,但它不是真的; 如果我通過電阻器施加足夠的電流,它會變得繁榮,因此電壓並不總是與電流成正比,但對於某些目的,該模型是合適的。
特別是,我們現在要描述的模型,我稱之為替代模型,是我們用來理解過程如何工作和過程如何工作的最簡單的模型——過程如何產生過程。
對於我們將在接下來的幾天內處理的大多數事情,該替代模型將是准確的。 但最終,將無法維持機器工作方式的錯覺,我們將轉向其他更具體和特定的模型,以顯示更多細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.