重复的有限程度如何?

时间:2012-04-16 05:21:06

标签: recursion clojure tail-call-optimization

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

正如我所读到的,这不是一般的“TCO”。除了显而易见的(需要关键字+检查),以任何方式recur都不那么强大了吗?

2 个答案:

答案 0 :(得分:2)

recur仅支持尾递归优化,后者是一般TCO的子类。 Clojure还支持通过trampoline进行相互或间接递归。

修改 此外,我认为一般的TCO预计会在JVM中使用Java 7而recur是临时解决方案。然后Oracle发生了。我把它与Project Lambda(在Java中添加闭包)计划混合

答案 1 :(得分:1)

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