7
我最近一直在閱讀SBCL User Manual並開始想知道題目問題。很顯然,一些lisp,例如clojure,禁止所有的副作用,以便他們可以很容易地並行化代碼。 Common Lisp允許副作用,所以我想知道給定函數是「髒」還是「乾淨」的事實會影響它的編譯。sbcl在優化時是否考慮函數是否有副作用?
例如,在the CMUCL compiler manual中,讓優化顯示了在許多情況下,使用'let'綁定新變量比使用'setq'更有效。我想我問是否有類似的功能調用。
我已經閱讀了sbcl手冊的相關章節,並通過了關於stackoverflow的問題,但無法找到答案。
Clojure沒有(不能)禁止所有的副作用。例如'(println「Hello World」)'是一個副作用。要完全禁止他們,他們或者需要1.不要用語言。 2.被一個非常強大的類型系統隔開。其他任何意味着停止問題 – jozefg
謝謝,我應該做得更清楚。 – Baggers
用你的問題寫入sbcl-devel郵件列表。如果你向他們提出一個好的和明確的問題,我相信他們會給你一個很好的答案。 –