Clojure被认为是Lispy还是Schemey?

Chi*_*ron 2 lisp scheme clojure

可能重复:
从初学者的角度来看,Clojure是否更接近Scheme或Common Lisp?

Clojure是一种在JVM上运行的Lisp方言.
Clojure被认为是Lispy还是Schemey?
我的意思是它像Lisp还是喜欢Scheme?

Stu*_*rra 12

如果用"Lispy"表示"喜欢Common Lisp",那么......

Clojure是"Lispy",因为它具有完整(非卫生)宏并且不保证尾调用优化(除了recur).

Clojure是"Schemey",因为它对函数和值都有一个命名空间(它是一个Lisp-1).

  • @El Gusto一点也不.Clojure缺少Scheme的大多数"最佳"功能,例如完全卫生的宏,正确的尾调用优化,一流的延续等. (4认同)
  • @El Gusto我认为Clojure提供了一系列优秀的功能,从其他Lisps甚至一些非Lispy语言中获取好处并试图防止坏事.关于Clojure的最好的事情之一是它托管在JVM上.JVM虽然是一个很棒的东西并且带来了很多东西(一个成熟,稳定,支持的平台,更不用说足够的库来游泳),确实带来了一些限制,其中一个就是JVM(因此Clojure)没有适当的尾递归.但是,在大多数情况下,您可以使用'recur'代替. (2认同)

Rai*_*wig 10

Lisp主要有两个含义:

  • Lisp是一个编程语言家族,从1958年的原始Lisp开始.

在这个意义上,Scheme,Clojure,Emacs Lisp,Common Lisp,Logo,...都有些"Lispy".

  • Lisp是一个语言系列,有一个主要分支:Lisp,Lisp 1.5,MacLisp,Lisp Machine Lisp,Common Lisp.

可以看出,可以运行几十年前的Lisp代码,而Common Lisp只有很少的变化.

在这种观点中,Scheme和Clojure都不是特别的"Lispy",因为它们与"主要分支"和历史性的Lisp广泛不相容.

Clojure是一种新的Lisp方言,它与所有其他Lisps以及历史悠久的Lisp大多不兼容.功能名称,标识符,语法等都是不同的.在我看来,它远离CL,因为它来自Scheme.


小智 5

当人们说"Schemey"时,他们倾向于表示"Lisp-1"与"Lisp-2",这在历史上是区别.Clojure以这种方式是有计划的.

但除此之外,Clojure在风格上更像是非常现代的lisp敏感度.可能是这种现代风格中最着名的前身是Arc.如果有的话,Clojure就是arc-ish:它更喜欢嵌套深度减少的构造(参见clojure和arc let与普通的lisp或scheme let); 两者都是不同的运行时嵌套在更大,更通用的解释器运行时中,可以免费提供更大的库; 并且两者都在名称中简洁,而不是常见的lisp规范中的疯狂长名称(例如,多值绑定).

Clojure是arc-ish.