据我所知,Clojurerecur
由编译器支持,而在其他 lisps 中,它是在较低级别实现的。
正如我所读到的,这不是“一般”的 TCO。除了显而易见的(需要关键字+检查)之外,还有什么recur
不那么强大的吗?
据我所知,Clojurerecur
由编译器支持,而在其他 lisps 中,它是在较低级别实现的。
正如我所读到的,这不是“一般”的 TCO。除了显而易见的(需要关键字+检查)之外,还有什么recur
不那么强大的吗?
recur
仅支持尾递归优化,它是通用 TCO 的子类。Clojure 还支持通过trampoline
.
编辑
另外,我认为一般 TCO 预计将在 Java 7 中登陆 JVM,并我已经将它与 Project Lambda 的(在 Java 中添加闭包)时间表混合在一起recur
作为临时解决方案。然后甲骨文发生了。
recur 与完整的 TCO 略有不同,因为它recur
同时适用于循环和函数,并且不做完全实现 TCO 会做的一些事情。对此的哲学支持是使特殊部分看起来很特别,而不是默默地优化统一的语法。