我编写了一个中等大小的应用程序并在 SBCL、CCL、ECL、CLISP、ABCL 和 LispWorks 中运行它。 对于我的应用程序,SBCL 无疑是最快的,并且它有一个非常好的调试器。对一些警告有点严格——你最终可能会以一种更严格的方式编码,或者关闭一个或多个警告。
我同意 Sylwester 的观点:如果可能,请编写标准,然后您可以在任何实现中运行您的代码。您将通过测试找出最适合您的项目的方法。
由于 SBCL 编译得如此积极,有时调试器中的堆栈跟踪信息比我想要的要少。这可能可以通过参数控制,但我只是在其他实现之一中重新运行相同的代码。例如,我记得 ABCL 有一个信息丰富的堆栈跟踪。(它也很慢,但如果你想要真正的 Common Lisp 和 Java 互操作性,它是唯一的选择。)
Common Lisp 的优点之一是有很多高质量的实现,其中大部分是免费的。
对于非正式用途——例如学习 Common Lisp,CCL 或 CLISP 可能是比 SBCL 更好的选择。
我从未尝试过使用 ECL 编译为 C。对于某些应用程序,它可能会在速度上击败 SBCL。我不知道。
CLISP 和 LispWorks 不会处理任意长的参数列表(除非在过去几年中已修复,但我对此表示怀疑)。结果证明这是我的应用程序的问题,但对于大多数代码来说都不是问题。
ACT-R 不是出自卡耐基梅隆大学吗?它的作者使用什么?我的猜测是从 CMUCL 派生的 CMUCL 或 SBCL。(我只是简单地尝试了 CMUCL。它的解释器很慢,但我认为编译后的代码很快。但我认为大多数人选择 SBCL 而不是 CMUCL。)
(这个问题可能属于 Programmers.SE。)