Cóż, parametryczna relacja jest jednym z najważniejszych pomysłów wprowadzonych przez Johna Reynoldsa, więc nie powinno być zaskoczeniem, że wygląda jak magia. Oto bajka o tym, jak mógł ją wymyślić.
Załóżmy, że próbujesz sformalizować pogląd, że niektóre funkcje (tożsamość, mapa, składanie, odwracanie list) działają „tak samo na wielu typach”, tzn. Masz intuicyjne wyobrażenia o polimorfizmie parametrycznym i sformułowałeś pewne reguły do tworzenia takich map, tj. polimorficznego -calculus lub jego wczesnego wariantu. Zauważasz, że naiwna semantyka teoretyczna nie działa.λ
Na przykład patrzymy na typ
który powinien zawierać tylko mapę tożsamości, ale naiwna semantyka teoretyczna zestawu pozwala na niepożądane funkcje, takie jak
Aby wyeliminować tego rodzaju rzeczy, musimy nałożyć pewne dodatkowe warunki na funkcje. Na przykład, moglibyśmy wypróbować teorię domen: wyposażyć każdy zestaw w częściowy porządek i wymagać, aby wszystkie funkcje były monotoniczne. Ale to nie całkiem go ogranicza, ponieważ powyższa niepożądana funkcja jest stała lub identyczna, w zależności od , a są to mapy monotoniczne.∀ X: T y p e . X→ X,
λ X: T y p e . λ a : X. i f ( X= { 0 , 1 } ) t h e n 0 e l s e a .
X≤XX
Częściowy porządek ≤ jest relatywny, przechodni i antysymetryczny. Możemy spróbować zmienić strukturę, na przykład możemy spróbować zastosować ścisły porządek częściowy, porządek liniowy, relację równoważności lub po prostu relację symetryczną. Jednak w każdym przypadku wkradają się niechciane przykłady. Na przykład relacje symetryczne eliminują naszą niechcianą funkcję, ale pozwalają na inne funkcje uwarunkowane (ćwiczenie).
A potem zauważasz dwie rzeczy:
- Do chcieli przykłady nie są eliminowane, co stosunki użyć zamiast częściowych zamówień ≤ .
- Dla każdego konkretnego niechcianego przykładu, na który patrzysz, możesz znaleźć relację, która go eliminuje, ale nie ma jednej relacji, która eliminowałaby wszystkie z nich.
Zatem masz genialną myśl, że pożądanymi funkcjami są te, które zachowują wszystkie relacje , i rodzi się model relacyjny.