Як можна мотивувати реляційну параметричність?


15

Чи існує якийсь природний спосіб зрозуміти суть реляційної семантики параметричного поліморфізму?

Я щойно почав читати про поняття реляційної параметричності, а-ля Джона Рейнольдса "Типи, абстракція та параметричний поліморфізм", і у мене виникають проблеми з розумінням того, як мотивується реляційна семантика. Набір семантики має для мене ідеальний сенс, і я розумію, що задана семантика є недостатньою для опису параметричного поліморфізму, але стрибок до реляційної семантики здається магічним, виходячи повністю з нізвідки.

Чи є якийсь спосіб пояснити це за рядками "Припустимо співвідношення основних типів і термінів, а потім інтерпретація похідних термінів - це лише природний зв'язок між ... такою та такою природною річчю ... у вашій мові програмування "? Або якесь інше природне пояснення?

Відповіді:


22

Що ж, реляційна параметричність - одна з найважливіших ідей, яку вводить Джон Рейнольдс, тому не слід надто дивувати, що це виглядає як магія. Ось казка про те, як він, можливо, його вигадав.

Припустимо, ви намагаєтесь формалізувати думку про те, що певні функції (ідентифікація, карта, складання, перетворення списків) діють "однаково на багатьох типах", тобто у вас є інтуїтивні уявлення про параметричний поліморфізм, і ви сформулювали деякі правила для створення таких карт, тобто поліморфного λ -калькуляції або якогось раннього його варіанту. Ви помічаєте, що наївна множинно-теоретична семантика не працює.

Наприклад, ми дивимось на тип

X:Type.XX,
яка повинна містити лише тотожність карти, але наївна теоретично множинна семантика дозволяє отримати небажані функції, такі як
λX:Type.λa:X.if (X={0,1}) then 0 else a.
Щоб усунути подібні речі, нам потрібно встановити деякі додаткові умови функцій. Наприклад, ми можемо спробувати деякі теорії домену: забезпечити кожен набір X частковим порядком X і вимагати, щоб усі функції були монотонними. Але це не зовсім скорочує це, оскільки зазначена вище непотрібна функція є або постійною, або тотожною, залежно від X , і це монотонні карти.

Частковий порядок є рефлексивним, транзитивним та антисиметричним. Ми можемо спробувати змінити структуру, наприклад, ми могли б спробувати використовувати строгий частковий порядок, або лінійний порядок, або відношення еквівалентності, або просто симетричне відношення. Однак у кожному випадку проникають деякі небажані приклади. Наприклад, симетричні відношення усувають нашу небажану функцію, але дозволяють виконувати інші небажані функції (вправа).

І тоді ви помічаєте дві речі:

  1. В необхідних прикладів ніколи не усунуто, незалежно від ставлення ви використовуєте замість часткових порядків .
  2. У кожному конкретному небажаному прикладі, який ви дивитесь, ви можете знайти відношення, яке його усуває, але не існує єдиного відношення, яке б усувало їх усіх.

Отже, у вас геніальна думка, що шукані функції - це ті, що зберігають усі відносини , і реляційна модель народжується.


1
Дякую Андрію. Це викликає подальше питання: чи існує якийсь менший підклас відносин, який усуває всі небажані приклади?
Том Елліс

Що ж, ми, мабуть, можемо обмежити логічну складність відносин, оскільки нам залишається турбуватися лише про обчислювані карти. Але мені недостатньо експерта, щоб відповісти. Я викликаю @UdayReddy.
Андрій Бауер

2
@TomEllis. Так, в особливих випадках може бути достатньо підкласу відносин. Найбільш безпосереднім особливим випадком є ​​те, що якщо всі операції першого порядку, то функцій (загальних, однозначних відносин) достатньо. Для полів достатньо часткових ізоморфізмів. Нагадаємо, що провідним прикладом Рейнольдса є поле складних чисел, а його логічне відношення між Бесселем і Декарт є частковим ізоморфізмом.
Uday Reddy

4
X.XX

Ви показуєте, що якщо ви інтерпретуєте типи як набори, то виникають небажані функції. Чи не те ж саме стосується відносин? \X:Type. \a:X. if X = {(0,0), (1,0), (0,1), (1,1)} then 0 else a
Жуль

11

Відповідь на ваше запитання насправді є у байці Рейнольдса (Розділ 1). Дозвольте спробувати і інтерпретувати це для вас.

У мові чи формалізмі, в яких типи трактуються як абстракції , змінна тип може виступати за будь-яку абстрактну концепцію. Ми не припускаємо, що типи генеруються через синтаксис термінів типу або якусь фіксовану колекцію операторів типів, або що ми можемо перевірити два типи на рівність тощо. На такій мові, якщо функція включає змінну типу, то єдину Те, що функція може зробити для значень цього типу, - це перетасувати навколо заданих значень. Він не може вигадувати нові значення цього типу, оскільки не "знає", що таке тип! Це інтуїтивна ідея параметричності .

tAAR:AAxAxAxxRtxxRxx

AAAAAA

RIKKt×IntInt×tR×IIntIInt×Rf(x,n)(x,n)(m,x)(m,x)F(IA1,,IAn)=IF(A1,,An) власність.

tttIntInttt×tt×t(tt)t(tt)(tt)


Нарешті, моя повістка спрацювала!
Андрій Бауер

2
@AndrejBauer Гм, насправді я не отримав повістки. Можливо, заклик @ UdayReddy працює лише на початку коментаря. У будь-якому випадку повістки не потрібні. "Параметричність" є серед моїх фільтрів.
Удай Редді

"єдине, що функція може зробити для значень цього типу, - це перемішувати навколо значень, які їй було надано" - насправді, крім перетасовки, функція може стерти задане значення (ослаблення) та скопіювати його (стиснення). Оскільки ці операції завжди доступні, значення не таке абстрактне, як може здатися.
Łukasz Lew

@ ŁukaszLew, ти маєш рацію. Я не знаю, чи можна це охарактеризувати як втрату "абстракції".
Удай Редді,

@UdayReddy Я видалив похвалу і задав це як окреме запитання .
Łukasz Lew

3

ω

Крім того, спокусливо визначити функції з однаковою поведінкою розширення, що призводить до відношення еквівалентності. Відношення є частковим, якщо виключити "невизначені" функції, тобто функції, які "цикли" для деякого добре сформованого вводу.

Моделі PER є узагальненням цього.

Інший спосіб бачити ці моделі - це (дуже) особливий випадок спрощених множинних моделей теорії типу гомотопії . У цьому рамках типи трактуються як (узагальнення), множини з відношеннями та відносини між цими відносинами тощо. На найнижчому рівні ми просто маємо моделі PER.

Нарешті, поле конструктивної математики побачило появу споріднених понять, зокрема Набір теорії єпископа передбачає опис множини, надаючи як елементи, так і явне відношення рівності, яке повинно бути еквівалентом. Природно очікувати, що деякі принципи конструктивної математики пробиваються в теорію типів.


1
Ах, але моделі PER не дуже приємні і можуть містити неприховані поліморфні функції. Треба перейти до реляційних моделей PER, щоб позбутися їх.
Андрій Бауер

Я все ще вважаю, що це мотивує реляційний підхід.
коді

@cody. Я згоден. Я вважаю PER як спосіб побудови відносин у "теорії множин", щоб ми могли отримати непередбачувані моделі в першу чергу. Дякуємо, що згадали теорію типу гомотопії. Я не знав, що у неї схожі ідеї.
Удай Редді

@UdayReddy: ідеї дуже схожі! Зокрема, ідею "сумісних залежних реалізацій", які пов'язують абстрактні типи із залежностями, можна зрозуміти через об'єктив однозначної рівності.
коді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.