我试图理解Lisp-1和Lisp-2之间的区别,以及这与Clojure之间的关系,但我仍然不能正确理解。有谁能开导我吗?
发布于 2011-01-02 22:52:55
根据wikipedia的说法
函数使用单独的名称空间是否是优势,这在Lisp社区中是一个争论的来源。它通常被称为Lisp-1与Lisp-2之争。Lisp-1指的是Scheme的模型,Lisp-2指的是Common Lisp的模型。
它基本上是关于变量和函数是否可以具有相同的名称而不会发生冲突。Clojure is a Lisp-1意味着它不允许函数和变量同时使用相同的名称。
发布于 2011-01-03 01:43:10
你可能想读一读Richard Gabriel写的这篇paper。它是Lisp社区在Lisp1与Lisp2中讨论的问题的摘要。在前几节中,它有点密集且移动缓慢,但当您读完第5节时,阅读起来会容易得多。
基本上,Lisp1有一个将符号映射到值的单一环境,这些值可以是“常规”或函数。Lisp2 (至少)有两个名称空间(符号有一个用于其函数值的槽,一个用于常规值的槽)。因此,在Lisp2中,您可以有一个名为foo的函数和一个名为foo的值,而在Lisp1中,名称foo只能引用单个值(函数或其他值)。
两者之间存在一些权衡和品味差异,但请阅读本文以了解详细信息。Christian Queinnec的书"Lisp in Small Pieces“也讨论了文本中编织的差异。
https://stackoverflow.com/questions/4578574
复制相似问题