Тип уточнения - Refinement type
Системы типов |
---|
Общие понятия |
Основные категории |
|
Второстепенные категории |
Смотрите также |
В теория типов, а тип уточнения[1][2][3] - это тип, наделенный предикатом, который, как предполагается, выполняется для любого элемента уточненного типа. Типы уточнения могут выражать предварительные условия при использовании как аргументы функции или же постусловия при использовании как возвращаемые типы: например, тип функции, которая принимает натуральные числа и возвращает натуральные числа больше 5, может быть записан как . Таким образом, типы уточнений связаны с поведенческий подтип.
История
Концепция типов уточнения была впервые представлена в книге Фримена и Пфеннинга 1991 г. Типы уточнений для ML [1], который представляет систему типов для подмножества Стандартный ML. Система типов «сохраняет разрешимость вывода типа ML», в то же время «позволяя обнаруживать больше ошибок во время компиляции». В последнее время были разработаны системы уточняющих типов для таких языков, как Haskell[4][5], Машинопись[6] и Scala.
Смотрите также
Рекомендации
- ^ а б Freeman, T .; Пфеннинг, Ф. (1991). «Типы уточнений для ML» (PDF). Труды конференции ACM по проектированию и реализации языков программирования. С. 268–277. Дои:10.1145/113445.113468.
- ^ Хаяси, С. (1993). «Логика видов уточнения». Материалы семинара по типам для доказательств и программ. С. 157–172. CiteSeerX 10.1.1.38.6346. Дои:10.1007/3-540-58085-9_74.
- ^ Денни, Э. (1998). «Виды уточнения по спецификации». Труды Международной конференции ИФИП по концепциям и методам программирования. 125. Чепмен и Холл. С. 148–166. CiteSeerX 10.1.1.22.4988.
- ^ Вазу, Ники. Liquid Haskell: типы уточнения для Haskell. 45-й симпозиум ACM SIGPLAN по принципам языков программирования (POPL 2018).
- ^ Волков, Никита (2015). «Типы уточнения как библиотека Haskell».
- ^ Панайотис, Векрис; Косман, Бенджамин; Джала, Ранджит (2016). «Типы уточнения для TypeScript». Труды 37-й конференции ACM SIGPLAN по проектированию и реализации языков программирования. С. 310–325. arXiv:1604.02480. Дои:10.1145/2908080.2908110.
Этот теория языков программирования или же теория типов -связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |