我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题。
答案 0 :(得分:94)
他们都有很多共同之处:
(function-name arg1 arg2)
Common Lisp的独特功能:
Clojure与众不同的特点:
[]
之外,作为标准使用的向量{}
和地图()
- 除了向量和地图的一般有用性之外,有些人认为这是一种创新更具可读性方案特色:
答案 1 :(得分:47)
上面的人错过了一些事情
Common Lisp也有向量和哈希表。不同之处在于Common Lisp对向量使用#()而对哈希表没有语法。方案有载体,我相信
Common Lisp有读取器宏,允许您使用新的括号(如Racket,Scheme的后代)。
Scheme和Clojure有卫生的宏,而不是Common Lisp的不卫生的
所有语言都是现代的或有大量的翻新项目。 Common Lisp在过去五年中获得了大量的库(主要归功于Quicklisp),Scheme有一些现代实现(Racket,Chicken,Chez Scheme等),而Clojure是最近创建的
Common Lisp有一个内置的OO系统,虽然它与你可能使用的其他OO系统有很大的不同。值得注意的是,它没有强制执行 - 你没有有来编写OO代码。
语言有一些不同的设计理念。 Scheme被设计为用于理解Actor模型的最小方言;它后来被用于教育学。 Common Lisp旨在统一涌现出来的无数Lisp方言。 Clojure是为并发而设计的。因此,Scheme具有最小和优雅的声誉,具有强大和范式无关的Common Lisp(功能,OO,无论如何),以及支持函数式编程的Clojure。
答案 2 :(得分:36)
不要忘记Lisp-1和Lisp-2的差异。
Scheme和Clojure是Lisp-1:
这意味着变量和函数名称都位于同一名称空间中。
Common Lisp是Lisp-2:
函数和变量具有不同的名称空间(事实上,CL有许多名称空间)。
答案 3 :(得分:-2)
Gimp用Scheme编写:)
事实上,有些人认为可能用C ++编写的软件可能是在Lisp的保护下完成的,很难从中挑选出金苹果。事实上,C ++并不总是受欢迎,但由于更新的历史,它今天似乎很受欢迎。在本世纪的较短一半时间里,C ++甚至没有使用多线程,而今天Python就是无用的未经测试的错误胶水代码的污水池。更快一点,现在我们看到功能编程的增加,更像是适应或死亡。我认为就适应部分而言,Java是正确的。
Scheme旨在简化Lisp语言,这是它唯一的意图,除非它从未真正流行起来。我认为Clojure做了类似的事情,它的意思是简化JVM的Scheme而已。它就像其他JVM语言一样,只是为了扩展用户体验,只是为了简化Java版本中的写入样板。