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邮件列表。如果你向他们提出一个好的和明确的问题,我相信他们会给你一个很好的答案。 –