Arc可以通过Clojure实现吗?

Arc可以通过Clojure实现吗?,clojure,arc-lisp,Clojure,Arc Lisp,我已经读了很多关于Arc的书,它似乎提供了一些好东西。由于Arc是一个lisp,而Clojure是一个lisp,我想知道Arc是否可以在Clojure之上实现?我可以立即看到的最重要的问题;Arc有真正的尾部调用优化,而clojure没有,因为JVM的限制。顺便说一句,这意味着您必须至少放弃将Arc函数作为JVM方法直接调用的功能,并且不能将Arc函数直接映射到Clojure函数,这可能意味着您会损失一些性能 可能意味着您将无法使用普通clojure轻松创建Arc的编译/高效版本。另一方面,如果

我已经读了很多关于Arc的书,它似乎提供了一些好东西。由于Arc是一个lisp,而Clojure是一个lisp,我想知道Arc是否可以在Clojure之上实现?

我可以立即看到的最重要的问题;Arc有真正的尾部调用优化,而clojure没有,因为JVM的限制。顺便说一句,这意味着您必须至少放弃将Arc函数作为JVM方法直接调用的功能,并且不能将Arc函数直接映射到Clojure函数,这可能意味着您会损失一些性能


可能意味着您将无法使用普通clojure轻松创建Arc的编译/高效版本。另一方面,如果你知道自己在做什么,“玩具”解释器应该不会太难。

在Clojure中实现一个Arc编译器会很有趣,尽管由于上面讨论的TCO问题,让它编译到JVM字节码可能会有点困难。仅仅因为它是用Clojure编写的,并不意味着它需要以JVM为目标


另一方面,Arc解释器是非常合理的

没有任何东西可以阻止Clojure中的Arc实现以与recur相同的方式自动消除尾部递归调用。同样,在一般情况下,类似的自动转换可以针对蹦床。是的,但就我所理解的问题而言,您必须“蹦床”每个非自递归的尾部调用,以提供与Arc相同的保证。这意味着你必须在任何地方使用连续传递。这当然可以做到,但clojure不使用它是有原因的。