Common Lisp 中的类型在什么意义上是一流的?

J. *_*ini 4 types common-lisp first-class

Peter Norvig 曾说过,许多 OOP 设计模式在 Lisp 中都是微不足道或多余的。这里的幻灯片 #10声称一流类型取代了其中的许多类型。

在什么意义上,Common Lisp 中的类型是一流的?作为参考,《计算机程序的结构和解释》给出了以下编程语言元素必须满足的条件才能被视为一流:

  1. 它们可以通过变量命名。

  2. 它们可以作为参数传递给过程。

  3. 它们可以作为程序的结果返回。

  4. 它们可能包含在数据结构中

证明 Common Lisp 中的类型满足上述条件将是一个很好的答案。

ign*_*ens 5

在 Common Lisp 中,类型不是一流的:该语言没有公开表示类型的对象,因此很容易满足您给出的所有要求。

是一流的,类对应于类型的子集。

类型说明符也是一流的:像integeror这样的类型说明(integer 0 (10))符显然是一流的,因为符号和列表是一流的。但类型说明符不是类型,就像符号cons或列表(lambda (x) x)不是函数一样。

所以诺维格的看法是错误的。