据我所知,Clojure的recur
由编译器支持,而在其他lisps中则是在较低级别实现。
正如我所读到的,这不是一般的“TCO”。除了显而易见的(需要关键字+检查),以任何方式recur
都不那么强大了吗?
答案 0 :(得分:2)
recur
仅支持尾递归优化,后者是一般TCO的子类。 Clojure还支持通过trampoline
进行相互或间接递归。
修改强>
此外,我认为一般的TCO预计会在JVM中使用Java 7而我把它与Project Lambda(在Java中添加闭包)计划混合recur
是临时解决方案。然后Oracle发生了。
答案 1 :(得分:1)
recur与完整TCO略有不同,因为 recur
适用于循环和函数,并且不执行完全实现TCO的一些事情。对此的哲学支持是使特殊部分看起来特别而不是默默地优化统一语法。