Zainspirowany rozległymi hierarchiami obecnymi w teorii złożoności, zastanawiałem się, czy takie hierarchie występują również w przypadku systemów typów. Jednak dwa przykłady, które do tej pory znalazłem, bardziej przypominają listy kontrolne (z funkcjami ortogonalnymi) niż hierarchie (z coraz bardziej ekspresyjnymi systemami typów).
Te dwa przykłady znalazłem to kostka Lambda i pojęcie polimorfizmu k rankingu . Pierwsza z nich to lista kontrolna z trzema opcjami, druga to prawdziwa hierarchia (choć moim zdaniem k-ranking dla określonych wartości k jest rzadkością). Wszystkie inne funkcje systemu typów, o których wiem, są w większości ortogonalne.
Interesują mnie te koncepcje, ponieważ projektuję własny język i jestem bardzo ciekawy, jak plasuje się on wśród obecnie istniejących systemów typów (o ile wiem, mój system typów jest nieco niekonwencjonalny).
Zdaję sobie sprawę, że pojęcie „ekspresyjności” może być nieco niejasne, co może wyjaśniać, dlaczego systemy czcionek wydają mi się listami kontrolnymi.
źródło
Odpowiedzi:
Istnieje kilka zmysłów „ekspresji”, które mogą być potrzebne dla systemu typów.
Czy jeden typ systemu gwarantuje lepsze właściwości niż inny. Na przykład systemy typu liniowego po prostu odrzucają więcej programów, ale to pozwala im na mocniejsze stwierdzanie o programach, które akceptują.
Niestety nie wierzę, że były prace nad kategoryzowaniem lub formalizowaniem tych pojęć, z wyjątkiem kostki lambda Barendregta, jak omawia @cody.
źródło
Nie jestem pewien, czy mam zadowalającą odpowiedź na twoje pytanie, ale jeśli weźmiesz pod uwagę Pure Type Systems, które są uogólnieniem systemów znajdujących się w kostce lambda (dokładny, choć nieco przestarzały przegląd można znaleźć w klasycznym tekście Barendregt ), istnieje kilka naturalnych pojęć hierarchii:
źródło