Ограниченная количественная оценка - Bounded quantification

В теория типов, ограниченная количественная оценка (также ограниченный полиморфизм или же ограниченная универсальность) относится к универсальный или же экзистенциальные кванторы которые ограничены ("ограничены") диапазоном только подтипами определенного типа. Ограниченная количественная оценка - это взаимодействие параметрический полиморфизм с подтип. Ограниченная количественная оценка традиционно изучалась в функциональный Установка из Система 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)      возвращаться а;    еще      возвращаться б;  }}

Смотрите также

Примечания

  1. ^ 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: Ограниченная количественная оценка

внешняя ссылка