Jump to content

Полиморфизм строк

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

Определение типа записи с полиморфной строкой

[ редактировать ]

Тип записи «строко-полиморфный» определяет список полей с соответствующими типами, список отсутствующих полей и переменную, указывающую отсутствие или наличие произвольных дополнительных полей. Оба списка являются необязательными, и переменная может быть ограничена. В частности, переменная может быть «пустой», что означает, что в записи не может быть дополнительных полей.

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

Строко-полиморфные типы записей позволяют нам писать программы, которые работают только с частью записи. Например, можно определить функцию, которая выполняет некоторое двумерное преобразование, которое принимает запись с двумя или более координатами и возвращает идентичный тип:

   

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

Ввод операций над записями

[ редактировать ]

Запись операций выбора поля , добавляем поле и удаление поля могут быть заданы полиморфные по строкам типы.

Примечания

[ редактировать ]
  1. ^ «OCaml — Полиморфные варианты» . v2.ocaml.org . Проверено 3 декабря 2022 г.
  2. ^ Ванд, Митчелл (июнь 1989 г.). «Вывод типа для конкатенации записей и множественного наследования». Слушания. Четвертый ежегодный симпозиум по логике в информатике . стр. 92–97. дои : 10.1109/LICS.1989.39162 .
  3. ^ Ванд, Митчелл (1991). «Вывод типа для конкатенации записей и множественного наследования». Информация и вычисления . 93 (Избранное с симпозиума IEEE по логике в информатике 1989 г.): 1–15. дои : 10.1016/0890-5401(91)90050-C . ISSN   0890-5401 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fac9e749dbbafe2e5bd0fcaaef63aca6__1707403260
URL1:https://arc.ask3.ru/arc/aa/fa/a6/fac9e749dbbafe2e5bd0fcaaef63aca6.html
Заголовок, (Title) документа по адресу, URL1:
Row polymorphism - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)