Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В теории типов языков программирования полиморфизм строк - это своего рода полиморфизм, который позволяет писать программы, полиморфные по типам полей записи (также известные как строки, отсюда и полиморфизм строк). Строка-полиморфная система типов и доказательство вывода типов были введены Митчеллом Вандом . [1] [2]

Записи и типы записей [ править ]

Значение записи записывается как , где запись содержит поля (столбцы), являются полями записи и являются значениями полей. Например, запись, содержащая трехмерную декартовую точку, может быть записана как .

Строка-полиморфная запись записывается как , где возможно, или . Запись имеет строковый полиморфный тип записи всякий раз, когда поле записи имеет тип (для ) и не имеет ни одного из полей (для ). Строка-полиморфная переменная выражает тот факт, что запись может содержать другие поля, чем .

Строковые полиморфные типы записей позволяют нам писать программы, которые работают только с частью записи. Например, это функция, выполняющая какое-то двумерное преобразование. Из-за полиморфизма строк функция может выполнять двумерное преобразование в трехмерной (фактически, n- мерной) точке, оставляя координату z неизменной. Более того, функция может работать с любой записью, содержащей поля и с типом . Обратите внимание, что не было потери информации: тип гарантирует, что все поля, представленные переменной , присутствуют в возвращаемом типе.

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

Операции ввода с записями [ править ]

Операциям записи по выбору поля , добавлению поля и удалению поля могут быть присвоены строчно-полиморфные типы.

Заметки [ править ]

  1. Перейти ↑ Wand, Mitchell (июнь 1989 г.). «Вывод типа для объединения записей и множественного наследования». Ход работы. Четвертый ежегодный симпозиум по логике в компьютерных науках . С. 92–97. DOI : 10,1109 / LICS.1989.39162 .
  2. Перейти ↑ Wand, Mitchell (1991). «Вывод типа для объединения записей и множественного наследования». Информация и вычисления . 93 (Выборки из симпозиума IEEE 1989 г. по логике в компьютерных науках): 1–15. DOI : 10.1016 / 0890-5401 (91) 90050-C . ISSN 0890-5401 .