Mai*_*tor 112 lisp scheme clojure common-lisp racket
我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题.
mik*_*era 94
他们都有很多共同之处:
(function-name arg1 arg2)
Common Lisp的特色:
Clojure与众不同的特点:
[]
和地图- 除了矢量和地图的一般有用性之外,一些人认为这是一种通常更具可读性的创新{}
()
方案特色:
Cos*_*246 47
上面的人错过了一些事情
Common Lisp也有向量和哈希表.不同之处在于Common Lisp对向量使用#()而对哈希表没有语法.我相信Scheme有vector
Common Lisp有读取器宏,允许您使用新的括号(如Racket,Scheme的后代).
Scheme和Clojure有卫生的宏,而不是Common Lisp的不卫生的宏
所有语言都是现代的或有大量的翻新项目.Common Lisp在过去五年中获得了大量的库(主要归功于Quicklisp),Scheme有一些现代实现(Racket,Chicken,Chez Scheme等),而Clojure是最近创建的
Common Lisp有一个内置的OO系统,虽然它与你可能使用的其他OO系统有很大的不同.值得注意的是,它不是强制-你不具备编写面向对象的代码.
这些语言有一些不同的设计理念.Scheme被设计为用于理解Actor模型的最小方言; 它后来被用于教育学.Common Lisp旨在统一涌现出来的无数Lisp方言.Clojure是为并发而设计的.因此,Scheme具有最小和优雅的声誉,具有强大和范式无关的Common Lisp(功能,OO,无论如何),以及支持函数式编程的Clojure.
pau*_*aul 36
不要忘记Lisp-1和Lisp-2的区别.
Scheme和Clojure是Lisp-1:
这意味着变量和函数名都驻留在同一名称空间中.
Common Lisp是Lisp-2:
函数和变量有不同的命名空间(事实上,CL有很多命名空间).