![]() | Эта статья не предоставляет достаточного контекста для тех, кто не знаком с предметом . Октябрь 2018 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
![]() | Эта статья требует внимания специалиста по математике . Конкретная проблема заключается в следующем: Обозначения неясны, без объяснения того, как n в первой формуле соотносится с n и m во второй формуле, или как они могут быть равны 0, или каковы все эти дополнительные поля. Октябрь 2018 г. ) ( |
В теории типов языков программирования полиморфизм строк - это своего рода полиморфизм, который позволяет писать программы, полиморфные по типам полей записи (также известные как строки, отсюда и полиморфизм строк). Строка-полиморфная система типов и доказательство вывода типов были введены Митчеллом Вандом . [1] [2]
Записи и типы записей [ править ]
Значение записи записывается как , где запись содержит поля (столбцы), являются полями записи и являются значениями полей. Например, запись, содержащая трехмерную декартовую точку, может быть записана как .
Строка-полиморфная запись записывается как , где возможно, или . Запись имеет строковый полиморфный тип записи всякий раз, когда поле записи имеет тип (для ) и не имеет ни одного из полей (для ). Строка-полиморфная переменная выражает тот факт, что запись может содержать другие поля, чем .
Строковые полиморфные типы записей позволяют нам писать программы, которые работают только с частью записи. Например, это функция, выполняющая какое-то двумерное преобразование. Из-за полиморфизма строк функция может выполнять двумерное преобразование в трехмерной (фактически, n- мерной) точке, оставляя координату z неизменной. Более того, функция может работать с любой записью, содержащей поля и с типом . Обратите внимание, что не было потери информации: тип гарантирует, что все поля, представленные переменной , присутствуют в возвращаемом типе.
Полиморфизмы строк могут быть ограничены. Тип выражает тот факт , что запись этого типа имеет ровно и поле , и ничего другого. Таким образом, получается классический тип записи.
Операции ввода с записями [ править ]
Операциям записи по выбору поля , добавлению поля и удалению поля могут быть присвоены строчно-полиморфные типы.
Заметки [ править ]
- Перейти ↑ Wand, Mitchell (июнь 1989 г.). «Вывод типа для объединения записей и множественного наследования». Ход работы. Четвертый ежегодный симпозиум по логике в компьютерных науках . С. 92–97. DOI : 10,1109 / LICS.1989.39162 .
- Перейти ↑ Wand, Mitchell (1991). «Вывод типа для объединения записей и множественного наследования». Информация и вычисления . 93 (Выборки из симпозиума IEEE 1989 г. по логике в компьютерных науках): 1–15. DOI : 10.1016 / 0890-5401 (91) 90050-C . ISSN 0890-5401 .