Полиморфизм строк
Эта статья предоставляет недостаточный контекст для тех, кто не знаком с предметом . ( Октябрь 2018 г. ) |
В языков программирования теории типов полиморфизм строк — это своего рода полиморфизм , который позволяет писать программы, полиморфные по типам строк, например типы записей и полиморфные варианты. [1] Строко-полиморфная система типов и доказательство вывода типа были представлены Митчеллом Вандом . [2] [3]
Определение типа записи с полиморфной строкой
[ редактировать ]Тип записи «строко-полиморфный» определяет список полей с соответствующими типами, список отсутствующих полей и переменную, указывающую отсутствие или наличие произвольных дополнительных полей. Оба списка являются необязательными, и переменная может быть ограничена. В частности, переменная может быть «пустой», что означает, что в записи не может быть дополнительных полей.
Это может быть записано как . Это указывает на тип записи, которая имеет поля с соответствующими видами (для ) и не имеет ни одного поля (для ), пока выражает тот факт, что запись может содержать другие поля, кроме .
Строко-полиморфные типы записей позволяют нам писать программы, которые работают только с частью записи. Например, можно определить функцию, которая выполняет некоторое двумерное преобразование, которое принимает запись с двумя или более координатами и возвращает идентичный тип:
Благодаря полиморфизму строк функция может выполнять двумерное преобразование трехмерной (фактически n -мерной) точки, оставляя координату z (или любые другие координаты) нетронутой. В более общем смысле функция может выполняться с любой записью, содержащей поля и с типом . Потери информации нет: тип гарантирует, что все поля, представленные переменной присутствуют в возвращаемом типе. Напротив, определение типа выражает тот факт, что запись этого типа имеет именно и поля и ничего более. В этом случае получается классический тип записи.
Ввод операций над записями
[ редактировать ]Запись операций выбора поля , добавляем поле и удаление поля могут быть заданы полиморфные по строкам типы.
Примечания
[ редактировать ]- ^ «OCaml — Полиморфные варианты» . v2.ocaml.org . Проверено 3 декабря 2022 г.
- ^ Ванд, Митчелл (июнь 1989 г.). «Вывод типа для конкатенации записей и множественного наследования». Слушания. Четвертый ежегодный симпозиум по логике в информатике . стр. 92–97. дои : 10.1109/LICS.1989.39162 .
- ^ Ванд, Митчелл (1991). «Вывод типа для конкатенации записей и множественного наследования». Информация и вычисления . 93 (Избранное с симпозиума IEEE по логике в информатике 1989 г.): 1–15. дои : 10.1016/0890-5401(91)90050-C . ISSN 0890-5401 .