我在以下问题上看到了这句话:构建Web服务时应使用哪种良好的功能语言?
除自递归功能外,Scala特别不支持尾部调用消除,这限制了您可以执行的组合类型(这是JVM的基本限制)。
这是真的?如果是这样,那么创建此基本限制的JVM是什么?
帖子:递归还是迭代?可能有帮助。
简而言之,由于安全模型以及始终需要可用的堆栈跟踪,因此在JVM中很难进行尾部调用优化。这些要求在理论上可以得到支持,但是可能需要一个新的字节码(请参阅John Rose的非正式建议)。
Sun bug#4726340中还有更多讨论,评估(从2002年开始)在此结束:
我相信仍然可以做到这一点,但这不是一个小任务。
当前,达芬奇机器项目中正在进行一些工作。尾部调用子项目的状态列为“原始80%”;不太可能将其纳入Java 7,但我认为它在Java 8中有很大的机会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句