Zub*_*air 89 lisp clojure lisp-2
我试图理解Lisp-1和Lisp-2之间的区别以及它与Clojure的关系,但我仍然不理解.任何人都可以开导我吗?
Pet*_*ain 66
你可能想读理查德加布里埃尔的这篇论文.它是Lisp社区在Lisp1和Lisp2中讨论的问题的摘要.它在前几节中有点密集且缓慢移动,但是当你超过第5节时更容易阅读.
基本上,Lisp1有一个将符号映射到值的环境,这些值可以是"常规"或函数.Lisp2具有(至少)两个名称空间(符号具有用于其函数值的槽和用于常规值的槽).因此,在Lisp2中,您可以拥有一个名为foo的函数和一个名为foo的值,而在Lisp1中,名称foo只能引用一个值(函数或其他).
两者之间存在一些权衡和品味差异,但请阅读论文了解详情.Christian Queinnec的书"Lisp in Small Pieces"也讨论了通过文本编织的差异.
pau*_*doo 60
根据维基百科:
函数的单独命名空间是否有优势是Lisp社区争用的根源.它通常被称为Lisp-1 vs. Lisp-2辩论.Lisp-1指的是Scheme的模型,Lisp-2指的是Common Lisp的模型.
它基本上是关于变量和函数是否可以具有相同的名称而不会发生冲突. Clojure是一个Lisp-1,意思是它不允许同一个名称同时用于函数和变量.