Clojure被认为是Lispy还是Schemey?

时间:2010-11-09 16:09:50

标签: clojure lisp scheme

  

可能重复:
  Is Clojure closer to Scheme or Common Lisp from a beginner's perspective?

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

3 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:10)

Lisp主要有两个含义:

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

在这个意义上,Scheme,Clojure,Emacs Lisp,Common Lisp,Logo,......都有些“痴迷”。

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

可以看出,在Common Lisp中只需很少的更改就可以运行几十年前的Lisp代码。

在这种观点中,Scheme和Clojure都不是特别的'Lispy',因为它们与'主分支'和历史悠久的Lisp广泛不兼容。

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

答案 2 :(得分:5)

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

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

Clojure是arc-ish。