Що ж, реляційна параметричність - одна з найважливіших ідей, яку вводить Джон Рейнольдс, тому не слід надто дивувати, що це виглядає як магія. Ось казка про те, як він, можливо, його вигадав.
Припустимо, ви намагаєтесь формалізувати думку про те, що певні функції (ідентифікація, карта, складання, перетворення списків) діють "однаково на багатьох типах", тобто у вас є інтуїтивні уявлення про параметричний поліморфізм, і ви сформулювали деякі правила для створення таких карт, тобто поліморфного λ -калькуляції або якогось раннього його варіанту. Ви помічаєте, що наївна множинно-теоретична семантика не працює.
Наприклад, ми дивимось на тип ∀X:Type.X→X,
яка повинна містити лише тотожність карти, але наївна теоретично множинна семантика дозволяє отримати небажані функції, такі як
λX:Type.λa:X.if (X={0,1}) then 0 else a.
Щоб усунути подібні речі, нам потрібно встановити деякі додаткові умови функцій. Наприклад, ми можемо спробувати деякі теорії домену: забезпечити кожен набір X частковим порядком ≤X і вимагати, щоб усі функції були монотонними. Але це не зовсім скорочує це, оскільки зазначена вище непотрібна функція є або постійною, або тотожною, залежно від X , і це монотонні карти.
Частковий порядок ≤ є рефлексивним, транзитивним та антисиметричним. Ми можемо спробувати змінити структуру, наприклад, ми могли б спробувати використовувати строгий частковий порядок, або лінійний порядок, або відношення еквівалентності, або просто симетричне відношення. Однак у кожному випадку проникають деякі небажані приклади. Наприклад, симетричні відношення усувають нашу небажану функцію, але дозволяють виконувати інші небажані функції (вправа).
І тоді ви помічаєте дві речі:
- В необхідних прикладів ніколи не усунуто, незалежно від ставлення ви використовуєте замість часткових порядків ≤ .
- У кожному конкретному небажаному прикладі, який ви дивитесь, ви можете знайти відношення, яке його усуває, але не існує єдиного відношення, яке б усувало їх усіх.
Отже, у вас геніальна думка, що шукані функції - це ті, що зберігають усі відносини , і реляційна модель народжується.