我一直在阅读关于弧的很多,它似乎提供了一些好东西。既然Arc是Lisp,而Clojure是Lisp,我想知道Arc是否可以在Clojure之上实现?可以通过Clojure实现Arc吗?
1
A
回答
1
我可以立即看到的最重要的问题; Arc具有真正的tail-call优化,clojure并不是因为JVM的限制。 AFAIK,这意味着您必须放弃至少能够直接调用Arc函数作为JVM方法,并且您不能将Arc函数直接映射到Clojure函数,这可能意味着您会失去一些性能。
可能意味着您无法使用普通clojure轻松创建Arc编译/高效版本。另一方面,如果你知道自己在做什么,“玩具”解释器不应该太难。
1
在Clojure中植入Arc编译器,虽然将其编译为JVM字节码,但由于上面讨论的TCO问题,它可能更难以理解。仅仅因为它是用Clojure编写的,并不意味着它需要针对JVM。
另一方面,弧解释器将是非常合理的。
相关问题
- 1. 我可以通过Gulp + Browserify实现吗?我需要Webpack吗?
- 2. Clojure中可以使用ClojureScript的core.async实现吗?
- 3. 可以通过类codemirror发现textareas吗?
- 4. 我可以通过linq而不是For Each来实现吗?
- 5. 这可以通过聚合来实现吗?
- 6. 我可以通过砌体实现这种布局吗?
- 7. 这个结果可以通过递归cte来实现吗?
- 8. 可以通过构图实现引用计数吗?
- 9. 可以通过内联实现值类型吗?
- 10. 我可以通过服务器实现客户端 - 客户端通信吗?
- 11. 实现Clojure库
- 12. 我可以通过实体SQL获取实体吗?
- 13. ARC可以导致内存泄漏吗?
- 14. Silverlight可以通过浏览器实例检测或通信吗?
- 15. 以后可以通过实例完成它的参数吗?
- 16. React VR - 是否可以通过socket.io实现实时对象?
- 17. 通过TypeScript/Javascript实现F#库吗?
- 18. 在Clojure中实现Java通用接口
- 19. 可以通过vb.net中的聚合/复合类实现接口吗?
- 20. Retina手持显示器:通过CSS可以实现1px边框吗?
- 21. 可以/应该通过赋值给属性来实现Python方法吗?
- 22. 这是“Reload safe”网页的含义,可以通过Ajax实现吗?
- 23. 有什么方法可以通过scikit-learn来实现skip gram吗?
- 24. TCP可以通过多个连接实现更高的传输速率吗?
- 25. 我可以使用增强现实吗?
- 26. 我可以自动实现类吗?
- 27. InfoView中可以实现VideoView吗?
- 28. ConstraintLayout可以实现这种设计吗?
- 29. ExtJS可以实现这种设计吗?
- 30. 可以重载接口的实现吗?
没有什么能够阻止Clojure中的Arc实现以与重现工作相同的方式自动消除尾递归调用。同样,在一般情况下,类似的自动转换可以针对蹦床。 – fogus 2011-04-21 17:04:46
是的,但据我了解这个问题,你必须“蹦床”每一个不是自递归的尾部呼叫才能提供与Arc相同的保证。这意味着你必须使用无处不在的延续。这当然可以完成,但是clojure没有使用它。 – 2011-04-21 17:13:11