WikiDer > Ограниченная количественная оценка
В теория типов, ограниченная количественная оценка (также ограниченный полиморфизм или же ограниченная универсальность) относится к универсальный или же экзистенциальные кванторы которые ограничены ("ограничены") диапазоном только подтипами определенного типа. Ограниченная количественная оценка - это взаимодействие параметрический полиморфизм с подтип. Ограниченная количественная оценка традиционно изучалась в функциональный Установка из Система F<:, но доступен в современном объектно-ориентированные языки поддерживающий параметрический полиморфизм (дженерики) Такие как Ява, C # и Scala.
Обзор
Цель ограниченной количественной оценки - учесть полиморфные функции зависеть от определенного поведения объектов вместо наследование типов. Он предполагает модель на основе записей для классов объектов, где каждый член класса является элементом записи, а все члены класса называются функциями. Атрибуты объекта представлены как функции, которые не принимают аргументов и возвращают объект. Конкретное поведение - это имя некоторой функции, а также типы аргументов и возвращаемый тип. Ограниченная количественная оценка позволяет рассматривать все объекты с такой функцией. Примером может служить полиморфный мин
функция, которая рассматривает все объекты, которые сопоставимы друг с другом.
F-ограниченная количественная оценка
F-ограниченная количественная оценка или же рекурсивно ограниченная количественная оценка, представленный в 1989 году, позволяет более точно вводить функции, которые применяются к рекурсивным типам. Рекурсивный тип - это тип, который включает функцию, которая использует его как тип для некоторого аргумента или его возвращаемого значения.[1]
Пример
Этот вид ограничения типа может быть выражен в Ява с универсальным интерфейсом. В следующем примере показано, как описывать типы, которые можно сравнивать друг с другом, и использовать это как информацию для ввода в полиморфные функции. В Test.min
функция использует простую ограниченную квантификацию и не сохраняет тип присвоенных типов, в отличие от Test.Fmin
функция, которая использует F-ограниченную квантификацию.
В математической записи типы двух функций следующие:
- min: ∀ T, ∀ S ⊆ {compareTo: T → int}. S → S → S
- Fmin: ∀ T ⊆ Сопоставимый [T]. Т → Т → Т
куда
- Сопоставимый [T] = {compareTo: T → int}
интерфейс Сопоставимый<Т> { общественный int сравнить с(Т Другой);}учебный класс Целое число орудия Сопоставимый<Целое число> { @Override общественный int сравнить с(Целое число Другой) { //... }}учебный класс Нить орудия Сопоставимый<Нить> { @Override общественный int сравнить с(Нить Другой) { //... }}учебный класс Тест { общественный статический пустота главный(Нить[] аргументы) { Сопоставимый<Нить> а = мин("Кот", "собака"); Сопоставимый<Целое число> б = мин(новый Целое число(10), новый Целое число(3)); Нить ул = Fmin("Кот", "собака"); Целое число я = Fmin(новый Целое число(10), новый Целое число(3)); } общественный статический <S расширяет Сопоставимый> S мин(S а, S б) { если (а.сравнить с(б) <= 0) возвращаться а; еще возвращаться б; } общественный статический <Т расширяет Сопоставимый<Т>> Т Fmin(Т а, Т б) { если (а.сравнить с(б) <= 0) возвращаться а; еще возвращаться б; }}
Смотрите также
- Ковариация и контравариантность (информатика)
- Любопытно повторяющийся шаблон шаблона
- Подстановочный знак (Java)
Примечания
- ^ F-ограниченный полиморфизм для объектно-ориентированного программирования. Консервирование повар, Хилл, Олтхоф и Митчелл. http://dl.acm.org/citation.cfm?id=99392
Рекомендации
- Карделли, Лука; Вегнер, Питер (Декабрь 1985 г.). «О понимании типов, абстракции данных и полиморфизма» (PDF). Опросы ACM Computing. 17 (4): 471–523. CiteSeerX 10.1.1.117.695. Дои:10.1145/6041.6042. ISSN 0360-0300.
- Питер С. Каннинг, Уильям Р. Кук, Уолтер Л. Хилл, Джон С. Митчелл, и Уильям Олтофф. «F-ограниченный полиморфизм для объектно-ориентированного программирования». В Конференция по языкам функционального программирования и компьютерной архитектуре, 1989.
- Бенджамин С. Пирс «Типы пересечений и ограниченный полиморфизм». Конспект лекций по информатике 664, 1993.
- Гилад Браха, Мартин Одерский, Дэвид Статамир, и Филип Вадлер. «Делаем будущее безопасным для прошлого: добавление универсальности языку программирования Java». В Объектно-ориентированное программирование: системы, языки, приложения (OOPSLA). ACM, октябрь 1998 г.
- Эндрю Кеннеди и Дон Сайм. «Разработка и реализация универсальных шаблонов для среды CLR .NET». В Разработка и реализация языков программирования, 2001.
- Пирс, Бенджамин С. (2002). Типы и языки программирования. MIT Press. ISBN 978-0-262-16209-8., Глава 26: Ограниченная количественная оценка
внешняя ссылка
- Ограниченный полиморфизм на Репозиторий портлендских паттернов
- «F-ограниченный полиморфизм» в Язык Сесила: спецификация и обоснование