Что такое тип "первого класса"?

Что значит для типа T быть типом "первого класса"?

3 ответа

Решение

Обычно это означает, что экземпляры T могут быть

  • вернулся из функций
  • перешел в функции
  • построен во время выполнения

Например, функции в C не являются типами первого класса, так как они не могут быть созданы во время выполнения, но они есть в JavaScript.

В некоторых специализированных обстоятельствах, например, доказательство теорем, это означает, что сами типы являются объектами первого класса. Более современная литература использует вместо этого "утонченные типы", чтобы обозначить это, чтобы избежать такой двусмысленности.

Использование "T" заставляет это звучать так, как будто кто-то говорил о состоянии обобщенных элементов в Java (они стираются, что означает, что, хотя вы можете проверить, является ли что-то списком во время выполнения, вы не можете проверить, является ли он списком Integer).

Однако существуют также "типы первого класса", означающие, что сами типы (а не только их экземпляры) могут отображаться где угодно, например в качестве значения выражения. Например, фрагменты кода, такие как

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

Но вы не видите этого в дикой природе, поскольку, если ваши типы зависят от значения, проверка типов требует больше вычислений, и если вы разрешаете типам зависеть от любого значения, проверка становится неразрешимой.

Я думаю, что первоклассный тип - это то же самое, что и первоклассный объект. Это в основном тип, который обеспечивает свойства первоклассного объекта.

Другие вопросы по тегам