Clojure被认为是Lispy还是Schemey?

Clojure被认为是Lispy还是Schemey?,clojure,lisp,scheme,Clojure,Lisp,Scheme,可能重复: Clojure是一种在JVM上运行的Lisp方言。 Clojure被认为是Lispy还是Schemey? 我的意思是它像Lisp还是像Scheme?Lisp主要有两种含义: Lisp是一种编程语言,始于1958年的Lisp 从这个意义上讲,Scheme、Clojure、Emacs Lisp、Common Lisp、Logo。。。都有点“口齿不清” Lisp是一个语言家族,有一个主要分支:Lisp、Lisp 1.5、MacLisp、Lisp机器Lisp、Common Lisp

可能重复:

Clojure是一种在JVM上运行的Lisp方言。
Clojure被认为是Lispy还是Schemey?

我的意思是它像Lisp还是像Scheme?

Lisp主要有两种含义:

  • Lisp是一种编程语言,始于1958年的Lisp
从这个意义上讲,Scheme、Clojure、Emacs Lisp、Common Lisp、Logo。。。都有点“口齿不清”

  • Lisp是一个语言家族,有一个主要分支:Lisp、Lisp 1.5、MacLisp、Lisp机器Lisp、Common Lisp
可以看出,运行几十年前的Lisp代码是可能的,而普通Lisp中的更改很少

从这个角度来看,Scheme和Clojure都不是特别的“Lispy”,因为它们与“主分支”和历史上的Lisp不兼容

Clojure是一种新的Lisp方言,它与所有其他Lisp以及历史上的Lisp不兼容。功能名称、标识符、语法等都是不同的。在我看来,它既远离CL,也远离Scheme。

如果“Lispy”的意思是“像Common Lisp一样”,那么

Clojure是“Lispy”,因为它有完整的(非卫生的)宏,并且不保证尾部调用优化(除了使用
recur

Clojure之所以称为“Schemey”,是因为它的函数和值都有一个名称空间(它是一个Lisp-1)。

当人们说“Schemey”时,他们往往指的是“Lisp-1”和“Lisp-2”,这是历史上的区别。Clojure就是这样的schemey

但除此之外,Clojure在风格上更像是非常现代的lisp敏感性。在这种现代风格中,clojure最著名的前身可能是Arc。如果有什么区别的话,Clojure是arc-ish:它更喜欢嵌套深度较小的结构(参见Clojure和arc-let与common lisp或scheme-let的比较);两者都是不同的运行时,嵌套在更大、更通用的解释器运行时中,免费提供更大的库;这两种方法都有利于名称的简洁性,而不是常见lisp规范中的超长名称(例如,多值绑定)


Clojure是弧型的。

与[从初学者的角度来看,Clojure更接近Scheme还是Common Lisp?]()相同。如果你在写“Lisp”时是指Common Lisp,正如@Matthew所指出的,这是重复的。如果你的意思是其他的,请解释一下,因为Scheme是一个Lisp,因此区分Lisp和Scheme是没有意义的。Scheme没有完整(非卫生)和保证尾部调用优化?另外,可以肯定地说Clojure结合了两个世界(通用Lisp和Scheme)的最佳功能吗?@El Gusto一点也不。Clojure缺少Scheme中的大多数“最佳”功能,例如完全卫生的宏、适当的尾部调用优化、一流的连续性等@El Gusto我认为Clojure提供了一系列优秀的功能,从其他Lisp甚至一些非Lispy语言中汲取了优点,并试图排除缺点。Clojure最好的一点是它托管在JVM上。JVM虽然是一个伟大的东西,并且带来了很多东西(一个成熟、稳定、受支持的平台,更不用说有足够的库可供使用),但确实带来了一些限制,其中之一是JVM(因此Clojure)没有适当的尾部递归。但是,在大多数情况下,您可以使用“重现”来代替。