Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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