Перейти к содержанию

Низший тип

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Низший тип (нулевой тип, пустой тип) — объект, использующийся в некоторых теориях типов и языках программирования, соответствующий типу без значений. Стандартное математическое обозначение — верхний галс[англ.] ([math]\displaystyle{ \bot }[/math]). В рамках соответствия Карри — Ховарда низший тип соответствует логической ложной формуле.

В системах, предусматривающих подтипы, низший тип является подтипом всех типов[1]; при этом обратное может быть неверно — в некоторых вариантах подтип всех типов не обязательно будет низшим. В некоторых системах типов вводится двойственное понятие — высший тип, охватывающий все возможные значения в системе.

В программировании низший тип в качестве возвращаемого значения функции часто используется чтобы показать расходимость функции: когда функция не возвращает никаких результатов вызывающей стороне. Поддерживаются в Haskell (начиная с версии 2010), Common Lisp (символ NIL), Scala (Nothing; также используется для ковариантности параметризованных типов), Rust (экспериментальный тип данных, обозначаемый как !; присутствует в сигнатуре функций, которые гарантированно не возвращают значений, например, при вызове panic!() или бесконечном цикле, и как возвращаемый тип для операторов потока управления, таких как break и return)[2], Ceylon (Nothing)[3], Julia (Union{})[4], TypeScript (never)[5][6], JavaScript с аннотациями Closure Compiler[англ.] (!Null), PHP (never), Python (typing.NoReturn)[7], Kotlin (Nothing)[8], Elm (Never)[9], D (noreturn)[10].

Примечания

  1. Пирс Бенджамин С. (1997). «Ограниченная количественная оценка с низшим пределом».
  2. Примитивный тип never. Документация стандартной библиотеки Rust. Дата обращения: 24 сентября 2020. Архивировано 23 сентября 2020 года.
  3. Глава 3. Система типов — 3.2.5. Низший тип. Язык программирования Ceylon. Red Hat, Inc.. Дата обращения: 19 февраля 2017. Архивировано 20 февраля 2017 года.
  4. Основы языка программирования Julia, <https://docs.julialang.org/en/v1/base/base/>  Архивная копия от 25 июля 2021 на Wayback Machine
  5. The never type, TypeScript 2.0 release notes, Microsoft, 2016-10-06, <https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#the-never-type>. Проверено 1 ноября 2019.  Архивная копия от 30 октября 2019 на Wayback Machine
  6. The never type, TypeScript 2.0 release notes, source code, Microsoft, 2016-10-06, <https://github.com/microsoft/TypeScript-Handbook/blob/bb3564f4f06dd776d430198a137ae9058454d990/pages/release%20notes/TypeScript%202.0.md#the-never-type>. Проверено 1 ноября 2019.  Архивная копия от 16 июля 2021 на Wayback Machine
  7. typing.NoReturn, typing — Поддержка подсказок типов, документация языка Python, Фонд программного обеспечения Python, <https://docs.python.org/3/library/typing.html#typing.NoReturn>. Проверено 25 февраля 2020.  Архивная копия от 21 февраля 2020 на Wayback Machine
  8. Nothing, <https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-nothing.html>. Проверено 15 мая 2020.  Архивная копия от 25 февраля 2020 на Wayback Machine
  9. Never, <https://package.elm-lang.org/packages/elm/core/latest/Basics#Never>. Проверено 25 марта 2021.  Архивная копия от 10 апреля 2021 на Wayback Machine
  10. Types - D Programming Language. dlang.org. Дата обращения: 31 июля 2022.

Ссылки

  • Пирс Б. Типы в языках программирования. — Добросвет, 2012. — 680 с. — ISBN 978-5-7913-0082-9.