我知道它们是同一种叫做lisp的语言的方言,但是到底有什么区别呢?如果可能的话,能否概述一下语法,特性,功能和资源等主题。
我知道它们是同一种叫做lisp的语言的方言,但是到底有什么区别呢?如果可能的话,能否概述一下语法,特性,功能和资源等主题。
Answers:
它们都有很多共同点:
(function-name arg1 arg2)
Lisp的共同特色:
Clojure的独特功能:
[]
和地图还{}
用作标准()
-除了矢量和地图的通用性外,有些人认为这是一项创新,通常可以提高可读性方案特色:
上面的人错过了几件事
Common Lisp也具有向量和哈希表。区别在于Common Lisp对向量使用#(),对哈希表不使用语法。我相信Scheme有矢量
Common Lisp具有读取器宏,该宏允许您使用新的方括号(如Scheme的后代Racket一样)。
Scheme和Clojure具有卫生宏,而不是Common Lisp的卫生宏
所有语言都是现代的,或者有大量的翻新项目。在过去的五年中,Common Lisp已获得了广泛的库(主要感谢Quicklisp),Scheme具有一些现代化的实现(球拍,鸡肉,Chez方案等),而Clojure是相对较新的创建的
Common Lisp具有内置的OO系统,尽管它与您可能使用过的其他OO系统完全不同。值得注意的是,它不是强制-你不具备编写面向对象的代码。
这些语言有一些不同的设计理念。Scheme被设计为了解Actor模型的最小方言;后来被用于教学法。普通Lisp旨在统一大量涌现的Lisp方言。Clojure专为并发而设计。结果,Scheme的名声是极简和优雅,Common Lisp的功能强大且与范式无关(功能,OO,无论如何),而Clojure则偏爱功能性编程。
Gimp用Scheme编写:)
实际上,有些人认为可能用C ++编写的软件分配可能是在Lisp的保护下完成的,很难从一堆中挑选出金苹果。事实是C ++并不总是很流行,由于更新的历史,它似乎直到今天才流行。在本世纪下半叶,C ++甚至没有利用多线程,这就是今天的Python成为无用的未经测试的错误胶合代码的源泉。快一点,现在我们看到函数式编程的兴起,它更像是适应或消亡。我认为Java就适应部分而言是正确的。
Scheme旨在简化Lisp语言,这只是它的初衷,除非它从未真正流行。我认为Clojure做了一些类似的事情,旨在简化JVM的Scheme。就像其他所有JVM语言一样,它可以提高用户体验,只是简化了Java语言的编写样板。