我最近一直在阅读SBCL 用户手册并开始想知道标题问题。显然,一些 lisp,例如 clojure,禁止所有副作用,因此它们可以轻松地并行化代码。Common Lisp 允许副作用,所以我想知道给定函数是“脏”还是“干净”的事实是否会影响它的编译。
例如,在 CMUCL 编译器手册中,让优化显示在许多情况下,使用“let”绑定新变量将比使用“setq”修改更有效。我想我在问是否对函数调用做了类似的事情。
我已经阅读了 sbcl 手册的相关部分,并在 stackoverflow 上提出了问题,但找不到答案。