Основной тип - Principal type

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

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

Например, ML система имеет свойство основного типа, и основные типы для выражения могут быть вычислены с помощью Алгоритм унификации Робинсона, который используется Вывод типа Хиндли-Милнера алгоритм. Однако многие расширения системы типов машинного обучения, такие как полиморфная рекурсия, может сделать неразрешимым вывод о главном типе. Другие расширения, такие как Haskell с обобщенные алгебраические типы данных, уничтожить свойство основного типа языка, требующее использования аннотации типов или компилятор, чтобы «угадать» предполагаемый тип из нескольких вариантов.

Свойство основного типа не следует путать с основная типизация свойство, которое требует, чтобы для данного термина существовала типизация (т. е. пара с контекстом и типом), которая является экземпляром всех возможных типизаций термина.[1]

использованная литература