什么是“头等舱”类型?

时间:2009-03-01 15:43:31

标签: types

类型T是“头等”类型是什么意思?

3 个答案:

答案 0 :(得分:26)

通常它意味着T的实例可以

  • 从函数
  • 返回
  • 传递给函数
  • 在运行时构建

例如,C中的函数不是第一类类型,因为它们不能在运行时构造,但它们是用JavaScript构建的。

在某些特殊情况下,例如定理证明,它意味着类型本身是第一类对象。更现代的文献使用“具体类型”代替表示这种模糊性。

答案 1 :(得分:26)

使用“T”听起来好像有人在谈论Java中的泛型状态(它们被删除了,这意味着虽然你可以在运行时检查某些东西是否是List,但是你无法检查它是否是整数列表。)

但是,也有“第一类类型”,这意味着类型本身(不仅仅是它们的实例)可以显示在任何地方,就像表达式的值一样。例如,代码片段如

someType s = new someType();
new typeOf(s); // makes a new instance of someType

但是你没有看到这么多,因为如果你的类型依赖于一个值,类型检查需要更多的计算,如果你允许类型依赖于任何值,那么检查变得不可判断。

答案 2 :(得分:1)

我认为头等类型与first-class object大致相同。它基本上是提供第一类对象属性的类型。