~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ BAEE5FA631DEB1B8A690A7D2EA899A8E__1685215020 ✰
Заголовок документа оригинал.:
✰ Kind (type theory) - Wikipedia ✰
Заголовок документа перевод.:
✰ Вид (теория типов) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Kind_(type_theory) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/ba/8e/baee5fa631deb1b8a690a7d2ea899a8e.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/ba/8e/baee5fa631deb1b8a690a7d2ea899a8e__translat.html ✰
Дата и время сохранения документа:
✰ 24.06.2024 07:19:17 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 27 May 2023, at 22:17 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Вид (теория типов) — Википедия Jump to content

Вид (теория типов)

Из Википедии, бесплатной энциклопедии

В области математической логики и информатики , известной как теория типов , вид — это тип конструктора типа или, реже, тип оператора типа более высокого порядка . Система видов, по сути, представляет собой просто типизированное лямбда-исчисление «на уровень выше», наделенное примитивным типом, обозначаемым и называется «типом», который представляет собой тип любого типа данных , который не требует каких-либо параметров типа .

Вид иногда ошибочно описывают как «тип типа (данных) », но на самом деле это скорее спецификатор арности . Синтаксически естественно считать полиморфные типы конструкторами типов, а неполиморфные типы — конструкторами нулевых типов. Но все нульарные конструкторы, а значит, и все мономорфные типы, имеют один и тот же, самый простой вид; а именно .

Поскольку операторы типов высшего порядка редко встречаются в языках программирования , в большей части практики программирования виды используются для различения типов данных и типов конструкторов, которые используются для реализации параметрического полиморфизма . Виды появляются явно или неявно в языках, системы типов которых учитывают параметрический полиморфизм программно доступным способом, например C++ . [1] Хаскель и Скала . [2]

Примеры [ править ]

Виды в Haskell [ править ]

( Примечание : в документации Haskell используется одна и та же стрелка для типов и видов функций.)

Видовая система Haskell 98 [4] включает ровно два вида:

  • , произносится как «тип» — это тип всех типов данных .
  • это своего рода конструктор унарного типа , который принимает тип вида и производит тип вида .

Обитаемый тип (так в Haskell называются правильные типы) — это тип, который имеет значения. Например, игнорируя классы типов , которые усложняют картину, 4 это значение типа Int, пока [1, 2, 3] это значение типа [Int](список Ints). Поэтому, Int и [Int] иметь добрый , но то же самое относится и к любому типу функции, например Int -> Bool или даже Int -> Int -> Bool.

Конструктор типа принимает один или несколько аргументов типа и создает тип данных, когда предоставлено достаточное количество аргументов, т. е. он поддерживает частичное применение благодаря каррированию. [5] [6] Вот как Haskell создает параметрические типы. Например, тип [](список) — это конструктор типа: для указания типа элементов списка требуется один аргумент. Следовательно, [Int] (список Ints), [Float] (список поплавков) и даже [[Int]] (список списков целых чисел) являются допустимыми приложениями []конструктор типов. Поэтому, [] это тип рода . Потому что Int имеет вид , применяя [] к этому приводит [Int], типа . 2- кортежный конструктор (,) имеет вид , трехкортежный конструктор (,,) имеет вид и так далее.

Добрый вывод [ править ]

Стандартный Haskell не допускает полиморфных типов . В этом отличие от параметрического полиморфизма типов, который поддерживается в Haskell. Например, в следующем примере:

 данных  Дерево   z    =   Лист   |    Развилка   (  Дерево   z  )   (  Дерево   z  ) 

вид z может быть что угодно, в том числе , но и и т. д. Haskell по умолчанию всегда будет определять типы, которые будут , если тип явно не указывает иное (см. ниже). Поэтому программа проверки типов отклонит следующее использование Tree:

введите   FunnyTree   =   Tree   []       -- неверно 

потому что вид [], не соответствует ожидаемому виду для z, что всегда .

Однако разрешены операторы типов более высокого порядка. Например:

 данных  Приложение   unt   z   =   Z   (  unt   z  ) 

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

GHC имеет расширение PolyKinds, который вместе с KindSignatures, допускает полиморфные виды. Например:

 данных  Дерево   (  z   ::   k  )   =   Лист   |    Развилка   (  Дерево   z  )   (  Дерево   z  ) 
 тип   FunnyTree   =   Дерево   []       -- ОК 

Начиная с GHC 8.0.1, типы и виды объединены. [7]

См. также [ править ]

Ссылки [ править ]

  • Пирс, Бенджамин (2002). Типы и языки программирования . МТИ Пресс. ISBN  0-262-16209-1 . , глава 29, «Операторы типов и сортировка»
  1. ^ «CS 115: Параметрический полиморфизм: функции шаблона» . www2.cs.uregin.ca . Проверено 6 августа 2020 г.
  2. ^ «Дженериксы высшего типа» (PDF) . Архивировано из оригинала (PDF) 10 июня 2012 г. Проверено 10 июня 2012 г.
  3. ^ Пирс (2002), глава 32
  4. ^ Виды - Отчет Haskell 98
  5. ^ «Глава 4. Объявления и обязательность» . Отчет о языке Haskell 2010 . Проверено 23 июля 2012 г.
  6. ^ Миран, Липовача. «Изучите Haskell во благо!» . Создание собственных типов и классов типов . Проверено 23 июля 2012 г.
  7. ^ «9.1. Параметры языка — Руководство пользователя компилятора Glasgow Haskell» .
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: BAEE5FA631DEB1B8A690A7D2EA899A8E__1685215020
URL1:https://en.wikipedia.org/wiki/Kind_(type_theory)
Заголовок, (Title) документа по адресу, URL1:
Kind (type theory) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)