|
|
1
23
这两种不同的方法有两个名称:Lisp-1和Lisp-2。Lisp-1对变量和函数都有一个名称空间(如Scheme中所示),而Lisp-2对变量和函数有单独的名称空间(如Common Lisp中所示)。我提到这一点是因为你可能不知道这个术语,因为你在问题中没有提到它。 维基百科 refers to this debate : 加布里埃尔和皮特曼的论文名为 Technical Issues of Separation in Function Cells and Value Cells 解决这个问题。 |
|
|
2
11
实际上,正如 the paper by Richard Gabriel and Kent Pitman ,争论是关于Lisp-5和Lisp-6的,因为已经存在其他几个名称空间,本文中提到了类型名、标记名、块名和声明名。 编辑:这似乎是不正确的,正如雷纳在评论中指出的:Scheme实际上似乎是一个Lisp-1。不过,以下内容基本上不受此错误的影响。
我知道Lisp-5的支持者喜欢函数是数据这一事实,这是用语言核心表达的。我喜欢这样一个事实:我可以在不混淆编译器的情况下调用列表“list”和汽车“car”,而且函数从根本上说是一种特殊的数据。 编辑:这是我的主要观点:单独的名称空间根本不是一个缺点。 |
|
|
3
2
我在Python(统一名称空间)和Ruby(方法和非方法的不同名称空间)中遇到了类似的区别。在这种情况下,我更喜欢Python的方法——例如,使用这种方法,如果我想列出一些东西,其中一些是函数,而另一些不是,我不需要根据它们的“函数性”对它们的名称做任何不同的事。类似的考虑也适用于所有函数对象被绑定而不是被调用的情况(高阶函数的参数和返回值等)。
也可以调用非函数(如果它们的类定义
|
|
|
4
2
Scheme中函数的名称只是一个变量,其值为函数。不管我做什么
Scheme是一种典型的函数式语言,因此将函数视为数据是其宗旨之一。让函数成为自己的一种类型,并像所有其他数据一样存储,这是一种贯彻这一理念的方式。 |
|
|
5
1
我看到的最大的缺点,至少对于CommonLisp来说,是可理解性。我们都同意它对变量和函数使用不同的名称空间,但它有多少名称空间?在PAIP中,Norvig显示它“至少有七个”名称空间。 当一位受人尊敬的程序员写的一本语言经典书籍,甚至不能在一本出版的书中肯定地说,我认为这是一个问题。我对多个名称空间没有问题,但我希望该语言至少足够简单 某人 我可以完全理解它的这一方面。 对于变量和函数使用相同的符号,我感到很舒服,但在更模糊的领域,出于恐惧,我会使用不同的名称(名称空间的冲突可能很难调试!),这真的不应该发生。 |
|
|
6
0
这两种方法都有好处。然而,我发现当这很重要时,我更喜欢同时拥有函数列表和变量列表,而不是错误地拼写其中一个。 |