Q
機制方案的功能的
2
A
回答
3
你剛剛偶然發現了'延續',可能是計劃中最難理解的東西。
call/cc
是call-with-current-continuation
的縮寫,該過程所做的是將單個參數函數作爲自己的參數,並用當前的「繼續」調用它。
那麼什麼是延續?這是非常難以解釋,你應該谷歌它得到比我更好的解釋。但是延續僅僅是一個論點的功能,它的主體代表了價值的某種「延續」。如果我們有(+ 2 (* 2 exp))
而exp是一個隨機表達式,如果我們評估該表達式,則存在等待該結果的「延續」,評估繼續進行的地方,如果它評估爲3,則插入價值轉化爲表達式(* 2 3)
,並從那裏繼續下一個「繼續」,或繼續進行評估的地方,即(+ 2 ...)
。
在幾乎所有的編程語言環境中,計算值與其開始位置相同的地方是相同的,但許多語言中的return
語句是一個關鍵的反例,其延續與完全不同返回語句本身。
在Scheme中,你可以直接控制你的延續,你可以像在那裏一樣捕獲它們。 f
所做的只不過是對當前的延續進行評估,畢竟當(lambda (x) x)
被當前延續調用時,它只是對它進行評估,因此整個函數體都會這樣做。正如我所說的,延續是功能本身,它們的身體可以被看作是它們將要捕獲的延續,這被設計師着名地表明,延續只是簡單的lambda抽象。
所以在代碼f中首先評估它被稱爲的延續。然後,作爲函數的這個延續應用於'f
(符號)。這意味着那個符號被帶回到那個繼續,在那裏它被再次評估爲一個符號,以揭示它所綁定的函數,它又被一個符號作爲它的參數調用,最後被顯示。
一種令人震驚的,如果你看過電影「底」,這也許解釋了它:
相關問題
- 1. 方案功能
- 2. PLT方案排序功能
- 3. 方案:功能援助
- 4. 方案定義功能
- 5. 方案標準功能?
- 6. 方案 - 功能 「如果」
- 7. 方案:球拍中的循環功能
- 8. 撥號方案中的書籤功能
- 9. 方案中的身份識別功能
- 10. 方案的功課
- 11. 是否可以在方案中製作切換功能?
- 12. 方案/球拍:可擴展功能
- 13. 方案最大功能(遞歸)
- 14. 如何抽象功能在方案
- 15. 定義一個方案功能檢查
- 16. 方案功能去除原子?
- 17. 無法編譯方案功能
- 18. 方案:該功能評估什麼?
- 19. 什麼是功能組合操作的「功能」包的替代方案?
- 20. 實用問題的強制性與功能性解決方案的好例子
- 21. 檢測方案或球拍中功能的主叫方
- 22. Haskell的圖案上的功能結果
- 23. 限制功能上的功能相等
- 24. 性能的解決方案
- 25. 方案限制
- 26. 沒有功能的相機
- 27. 本機Trigger.io功能的Screencast?
- 28. 效率最高:不同的功能/一個功能與案例
- 29. 從x中寫入數字的方案功能
- 30. 恢復方案或處理大部分的功能本身
非常感謝你的解釋和鏈接! – shaku 2010-06-27 18:50:48