Vij*_*hew 13 lisp scheme namespaces common-lisp
在Common Lisp中为值和函数设置单独的命名空间的设计决策背后的基本原理是什么?支持和反对的论据是什么?
Common Lisp基本上是原始Lisp 1.5的后代,或者更确切地说是它的不同方言的统一.原来的Lisp 1.5就是现在所谓的Lisp-2.因为它回到了六十年代,而且你可以将函数传递给其他函数的事实很奇怪.没有人会想到让他们共享相同的命名空间.几乎所有今天发明的支持高阶函数和匿名函数的语言都选择单命名空间方法.包括Clojure,它更接近Common Lisp而不是Scheme.
像Clojure一样,Scheme并不是Lisp 1.5中的一种不同的方言,并且出于他们的目的它是有道理的.
当然,在Clojure中,向量,哈希映射,集合以及所有这些也可以应用于参数,因此在某种意义上,Clojure中的向量可以被视为一个函数,它采用自然数并从中生成一个值.
尽管在理论上可能存在大量的论据,但我敢打赌,它在很大程度上是哲学的起源.Scheme,一个Lisp-1,优于实用性,并define
为变量和函数选择相同的语法,这使得单个命名空间感觉自然(并鼓励编程的功能风格).Common Lisp倾向于偏爱实用性和权力优于优雅,并且是尝试建立共识,因此看到现有的双命名空间解决方案被广泛接受并且运行良好,接受它.
然而,在实践中,它主要意味着三件事:
funcall
它lst
而不是list
然而,这是为什么有些人喜欢一个Lisp到另一个人的一个主要因素.
归档时间: |
|
查看次数: |
2486 次 |
最近记录: |