我一直在閱讀關於弧的很多,它似乎提供了一些好東西。既然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