我最近发现,如果它遵循Common Lisp标准,我可以在学校使用Lisp的任何方言进行函数式编程课程。 Clojure是否遵循此标准?它太不一样了吗?
答案 0 :(得分:16)
Clojure不遵循Common Lisp标准 - 它是一个全新的Lisp。
话虽如此,它与Common Lisp有很多共同之处,因此在一个中获得的知识通常适用于另一个。
许多重要的事情都是一样的:
(my-function arg1 arg2)
有些不同的东西:
{}
#{}
和集()
>
主观意见:我有偏见,但我认为对于大多数现代用法来说,如果你现在选择一个Lisp,Clojure肯定是要走的路 - 它是现代的重新设计Lisp拥有一个充满活力和创新的社区,是完成任务的务实选择。
答案 1 :(得分:4)
您不需要使用Common Lisp的方言。有很多优秀的Common Lisp实现 - 它们为Common Lisp提供了很多扩展。
对于使用Lisp的教育编程,我建议使用SBCL,它提供了一个出色的编译器。 CCL(Clozure Common Lisp)是另一个不错的选择。两者都在Linux和Mac OS X上运行得非常好。
有Common Lisp的方言(比如用于开发Cyc的SubL,一个基于知识的大型系统)和与Common Lisp相关的语言(如AutoCAD的Visual Lisp,GNU Emacs或ISLisp的Emacs Lisp),但在教育中使用它们是没有意义的。标准的Common Lisp实现很多,而且非常好。
Clojure 甚至不是Common Lisp的方言,它是一种不同的语言。
答案 2 :(得分:2)
Clojure是它自己的语言 - 不是Common Lisp语言的实现。所以它不遵循Common Lisp标准。
答案 3 :(得分:1)
我认为你教授的意思是,一些Common Lisp实现添加了许多不属于标准的额外功能,而你的教授不希望你使用这些功能。因此,选择您喜欢的任何Common Lisp实现,如SBCL或Clozure等,并且仅使用实际的Common Lisp函数,技术等,这些函数不是特定实现所特有的。换句话说,您编写的代码理论上应该在任何Common Lisp实现上运行。
Clojure,Scheme等是Lisp的其他方言,它们有自己的标准(适用时,“标准”一词具有不同程度的严格程度,取决于你的意思),与Common Lisp不同。也就是说,他们肯定不遵守Common Lisp标准。
坦率地说,在谈到Lisp语言时,“方言”通常指的是一种完全不同的Lisp语言,它与另一种方言没有相同的标准。因此,说“Common Lisp的不同方言”毫无意义。但是,你可以说,“不同的Lisp方言。”