Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有可能在SBCL(或其他快速Lisp)上实现Clojure(或Clojure语法)?_Clojure_Lisp_Sbcl - Fatal编程技术网

是否有可能在SBCL(或其他快速Lisp)上实现Clojure(或Clojure语法)?

是否有可能在SBCL(或其他快速Lisp)上实现Clojure(或Clojure语法)?,clojure,lisp,sbcl,Clojure,Lisp,Sbcl,我试过SBCL和Clojure,发现我喜欢Clojure的语法,但对我来说,它比SBCL慢得多。是否在SBCL上实施Clojure或是否可能 我找到了可以启发我的东西。:-) Clojure旨在针对多个后端。这是Clojure作为宿主语言的一个副作用,其设计理念是拥抱宿主。例如,我们的目标永远不会是让在JVM上为Clojure编写的代码不经修改地在CLR上运行。Clojure for JVM和ClojureScript之间有大量的代码是通用的,这是一个很好的奖励 目前,它在以下方面保持稳定:

我试过SBCL和Clojure,发现我喜欢Clojure的语法,但对我来说,它比SBCL慢得多。是否在SBCL上实施Clojure或是否可能



我找到了可以启发我的东西。:-)

Clojure旨在针对多个后端。这是Clojure作为宿主语言的一个副作用,其设计理念是拥抱宿主。例如,我们的目标永远不会是让在JVM上为Clojure编写的代码不经修改地在CLR上运行。Clojure for JVM和ClojureScript之间有大量的代码是通用的,这是一个很好的奖励

目前,它在以下方面保持稳定:

  • 虚拟机
  • JavaScript/ECMAScript
在以下情况下一般稳定:

  • CLR/.net
我还知道以下方面的实验构建:

  • 蟒蛇
  • C
  • 计划
  • IOS(通过方案)

随着兴趣和时间的交叉,越来越多的目标出现了。如果您想为您喜爱的Lisp提供一个实现,欢迎使用补丁!建议将您的实现基于ClojureScript编译器,因为它最能说明编译器的预期开发方法

这是可能的,但不太可能你会变得更快,然后它就在JVM上

如果你想加快速度,可以研究一下为clojure构建的更高速的库,比如使用低级别JVM表示的clojure数据等等,或者编写更快的库


使clojure在JVM上快速运行是一件棘手但可行的事情,可能比SBCL的端口好得多。

虽然前面的答案说明了在不同语言上托管clojure的困难,但我认为有一种编程语言很有趣:。它的设计使用了一组最小的语言,因此可以很容易地移植到不同的语言。它目前在CLisp、SBCL、Clojure、Scheme、Ruby、Python、Java和Javascript下运行。它似乎是ML和Lisp的混合体,尽管我还没有用它进行过很多编程

运行时较慢还是启动较慢?虽然启动时间是一个已知的问题,但运行速度应该是可比的。您正在运行哪个Clojure?也许您可以在一个示例中编辑SBCL比Clojure更快的程序?对于一组不同的小程序,在某些条件下,SBCL在某些程序上做得更好,Clojure在其他程序上做得更好:请参阅。我个人认为SBCL是一个难以置信的实现。比我的主应用程序的任何其他通用Lisp都要快。还没有尝试将其移植到Clojure。不能因为不喜欢CL的语法怪癖而责怪任何人。@Noises我的应用程序用于分析股票报价数据,在我速度最慢的笔记本电脑(Core solo 1.3Mhz)上,使用SBCL获得解决方案需要7秒,使用Clojure需要14秒以上。是的,启动时间本身可能是另一个问题,但我只是在Emacs中运行nrepl,从不关闭它,所以没问题。