有人可以解釋我的一些例子在高炮LISP應用和eval的區別? 我無法理解它。有人可以用一些例子解釋我在LISP中應用和評估的差異嗎?
回答
apply
適用的功能,一些參數:
(apply + 1 2 3)
;=> 6
eval
計算表達式:
(eval '(+ 1 2 3))
;=> 6
EVAL執行由Lisp的數據結構的任意的源代碼。這包括函數調用,宏觀形式,特殊形式,變量和自我評估數據。
APPLY應用一個函數的參數列表。
什麼更好的方式去理解它,而不是看看實際執行!請參閱自循環直譯器部分SICP,它有兩個eval
和apply
的內部運作一個非常明確的解釋。從書中引用:
評估和演示需要作爲參數的表達和的環境。它對錶達進行分類並指導其評估。 Eval的結構是對待評估表達式的語法類型的案例分析。爲了保持程序的一般性,我們抽象地表達了對錶達式類型的確定,不承諾對各種類型表達式的任何特定表示。每種類型的表達式都有一個測試它的謂詞和一個用於選擇其部分的抽象手段。這種抽象語法可以很容易地看到我們如何通過使用相同的評估程序來更改語言的語法,但使用不同的語法過程集合。
應用需要兩個參數,一個過程和過程應該應用到的參數列表。將分類過程應用於兩種:它調用apply-primitive-procedure來應用基元;它通過順序評估組成過程主體的表達式來應用複合過程。用於化合物過程體的評價環境通過延伸通過的方法進行的鹼環境中包括結合該過程的參數,以向所述程序是要應用的參數的框架構成。
Common Lisp'eval'實際上並不需要環境參數。它在當前動態環境和空詞彙環境中評估其表達式參數。 – 2012-01-16 16:21:49
- 1. 有人可以解釋這個懶惰的評估代碼嗎?
- 2. 有人可以解釋嗎?
- 3. 有人可以爲我解釋COMTIMEOUTS嗎?
- 4. 有人可以向我解釋runQueryOnBackgroundThread嗎?
- 5. 有人可以向我解釋應用程序類在Android中的作用嗎?
- 6. 有人可以解釋在iOS中使用initWithNibName給我嗎?
- 7. 有人可以用下面的例子來解釋Linq中的Query Reshaping嗎?
- 8. 可能有人向我解釋下面的os.fork()例子嗎?
- 9. 有人可以解釋一下蘋果評論指南嗎?
- 10. 有人可以解釋這一點嗎?
- 11. 有人可以解釋一下嗎?
- 12. 有人可以請一個真實的例子解釋我的功能和方法在JavaScript中的區別嗎?
- 13. 回調&params.require - 有人可以向我解釋這些嗎?
- 14. 有人可以向我解釋這些Haskell函數嗎?
- 15. 有人可以解釋Django的gzip的包之間的差異
- 16. 有人可以請我解釋異常處理嗎?
- 17. 有人可以在Go中解釋這個接口的例子嗎?
- 18. 我可以評估Proc中的塊嗎?
- 19. 有人可以給我一個簡單的例子和JavaScript中的內存泄漏的解釋嗎?
- 20. 有人可以解釋什麼評估()和dragAndDrop()在以下Angular測試代碼中調用?
- 21. 有人可以向我詳細解釋'this'的用法嗎?
- 22. 有人可以解釋我在Scala中的隱式轉換嗎?
- 23. 有人可以在我的IIS SMTP日誌中解釋這些TIMEOUT條目嗎?
- 24. 有人可以幫助我解釋這些線在MIPS中的含義嗎?
- 25. 有人可以給我一個node.js應用程序的例子
- 26. 有人可以解釋一個代表是什麼樣的例子嗎?
- 27. Javascript'this'reference - 有人可以解釋一下這個簡單的例子嗎?
- 28. 有人可以解釋iOS4的CMTime嗎?
- 29. 有人可以幫我理解這個例子的泛型嗎?
- 30. 有人解釋一些代碼嗎?
要知道,像Common Lisp的和Emacs-Lisp的一些Lisp的需要'+'被應用之前的報價。否則,他們會嘗試評估它。 – Daimrod 2012-01-15 17:17:00