Lisp 在哪些情况下使用Clojure更好?

Lisp 在哪些情况下使用Clojure更好?,lisp,clojure,scheme,Lisp,Clojure,Scheme,我在Lisp和Scheme中开发,但我读到了Clojure,然后我想知道,在哪些情况下使用它比使用Lisp或Scheme更好?谢谢你,Clojure在JVM(和CLR)上运行,这就是问题所在。“Clojure在JVM上运行”意味着你可以获得所有可用的Java库。您可以在Swing中创建漂亮的GUI,使用Apache的Web客户端或服务器代码,连接现成的数独解算器。。。你喜欢什么都行 Clojure的另一大优点是它非常完善的并发支持,大约有3种不同的风格。如果您有一个计算密集型、可并行化的任务,C

我在Lisp和Scheme中开发,但我读到了Clojure,然后我想知道,在哪些情况下使用它比使用Lisp或Scheme更好?谢谢你,Clojure在JVM(和CLR)上运行,这就是问题所在。

“Clojure在JVM上运行”意味着你可以获得所有可用的Java库。您可以在Swing中创建漂亮的GUI,使用Apache的Web客户端或服务器代码,连接现成的数独解算器。。。你喜欢什么都行

Clojure的另一大优点是它非常完善的并发支持,大约有3种不同的风格。如果您有一个计算密集型、可并行化的任务,Clojure可以让它变得简单。好吧,容易些


更新:另一个论点。Clojure的功能非常强大,因此,如果你想强迫自己从功能上思考和编写,它是一个加号。

Clojure的一个子集也可以编译成javascript

  • 您需要使用现有的java代码
  • 您与对lisp过敏的人一起工作(“老板,我想使用一个名为clojue的java并发库,而不是我想在scheme中重新编写它”[1]
  • 您将为多处理器系统编程
在以下情况下,该计划会更好:

  • 你需要证明你的代码是正确的。Clojures(调用java)阻碍但不能阻止这一点
  • 您正在与对java过敏的人一起工作
  • 您正在开发一个没有(足够新的)JVM的平台

[1]是的,这是一个不好的理由。这就是我们所生活的世界…

Clojure的设计关注的是安全地适应多种并发编程风格,故意使人们难以错误地用其他语言编写危险、不稳定且经常中断的并发容错代码在rent编程中,Clojure的一系列用于管理并发性的集成工具可能比其他Lisp和Scheme中提供的特定于实现的或最低公分母的库更合适。

这个问题不可能回答。我想说的是,在CL和Scheme中,您几乎100%的时间都应该使用Clojure这并不意味着你应该听我的。其他人可以提出一个很好的论点,认为情况恰恰相反

对我来说,Clojure中的语法和函数名非常美观。某些Java库对于我在数据挖掘、web编程和GUI方面所做的工作是非常宝贵的。函数式编程充满挑战和乐趣。Clojure的缺陷并不重要,在我看来,它的好处超过了它的价值。其他语言中某些无法容忍的缺陷SP在Clojure中是“固定”的,因为它是新的,并且可以忽略向后兼容性。它有一种新颖且可以说是强大的并发方法。Clojure社区充满活力、热情且令人敬畏。所有这些都说明了我和我对Clojure或其他Lisp的重视程度

Clojure或Java中没有CL和Scheme库。有些人不喜欢Clojure使用太多语法,如
[]
{}
并且想在任何地方都使用parens。如果你想要CLOS风格的OOP或大量可变的数据结构,另一个Lisp可以说更好。JVM很重,可能对某些人来说太重,负担太重。很多Java泄漏到Clojure中(根据设计)这冒犯了一些人的感情。STM和不可变的数据结构产生了制造某些东西的开销(例如数字运算)较慢或不太优雅。Clojure在某些领域是新的,仍然粗糙,在其他领域仍然快速变化和演变。Clojure尚未通过时间的考验,而其他Lisp已经通过了。Clojure不是一个“标准”有些人发现由实现定义的语言不吸引人。等等。这些东西对我来说都不重要,但对你来说可能很重要

这几乎完全是主观的。你应该使用哪种语言取决于你已经知道的,你愿意学习的,你想使用的库,你喜欢的编辑器和工具,你愿意接受和克服的语言缺陷,你不能容忍的缺陷,以及什么能帮助你完成工作更快,更便宜,更愉快,或者实现你的目标

基本上,任何让你感到温暖和模糊的东西。把它们都学会,然后根据自己的口味做出明智的选择,选择你最喜欢的。它们都很好。

什么时候?尽可能多。
为什么?不可变的数据结构-它们真的很好。还有很多。Clojure最大的优点之一是可以使用大量的库。你拥有Java的强大功能和Lisp的表达能力,这是一个糟糕的组合。Clojure更适合于现实世界的开发,因为它是由有了Clojure,你就有了很棒的库、很棒的现代功能,还有一个由乐于助人、志同道合的人组成的令人惊叹的社区

我不得不说Clojure是一种更好的语言,这是一个非常有争议性的陈述,所以我要在这里指出,这只是我诚实的观点

Clojure rocks.

(Armed Bear Common Lisp)和一些Scheme实现(KAWA、SISC等)也在JVM上运行

一般来说,通用Lisp有不同的“风格”——ABCL就是其中之一。其他编译为C、本机代码的版本有广泛的开发环境或专门的扩展,如逻辑语言或数据库

Clojure OTOH是一种新的Lisp方言,强调惰性函数编程和并发编程。其作者(Rich Hickey)是一位经验丰富的软件开发人员(他还为通用Lisp编写了Java和.net接口),在Clojure方面做得很好。尽管