5

据我所知,Clojurerecur由编译器支持,而在其他 lisps 中,它是在较低级别实现的。

正如我所读到的,这不是“一般”的 TCO。除了显而易见的(需要关键字+检查)之外,还有什么recur不那么强大的吗?

4

2 回答 2

2

recur仅支持尾递归优化,它是通用 TCO 的子类。Clojure 还支持通过trampoline.

编辑 另外,我认为一般 TCO 预计将在 Java 7 中登陆 JVM,并recur作为临时解决方案。然后甲骨文发生了。我已经将它与 Project Lambda 的(在 Java 中添加闭包)时间表混合在一起

于 2012-04-17T06:49:14.643 回答
1

recur 与完整的 TCO 略有不同,因为它recur同时适用于循环和函数,并且不做完全实现 TCO 会做的一些事情。对此的哲学支持是使特殊部分看起来很特别,而不是默默地优化统一的语法。

于 2012-04-16T21:58:18.007 回答