Krótka odpowiedź brzmi „zweryfikować dodatkowe właściwości istniejącego kodu”. Następuje dłuższa odpowiedź.
Nie jestem pewien, czy „domyślna” kontra „wyraźna” jest dobrą terminologią. To rozróżnienie jest czasem nazywane podtypem „strukturalnym” vs. Istnieje również drugie rozróżnienie w możliwych interpretacjach podtypu strukturalnego (krótko opisanych). Zauważ, że wszystkie trzy interpretacje podtypów są w rzeczywistości ortogonalne, więc nie ma sensu porównywanie ich ze sobą, zamiast zrozumienia ich zastosowania.
Głównym rozróżnieniem operacyjnym w interpretacji strukturalnego stosunku podsieci A <: B jest to, czy świadczy o tym rzeczywisty przymus z treścią obliczeniową (środowisko uruchomieniowe / kompilacja), czy też może być świadkiem przymusu tożsamości. Jeśli to pierwsze, ważną właściwością teoretyczną, którą musi się zachować, jest „spójność”, tj. Jeśli istnieje wiele sposobów wykazania, że A jest podstrukturalnym podtypem B, każda z towarzyszących koercji musi mieć tę samą treść obliczeniową.
Podany link wydaje się mieć na uwadze drugą interpretację podtypu strukturalnego, w której A <: B można zaobserwować poprzez przymus tożsamości. Jest to czasami nazywane „interpretacją podzbioru” podtypu, biorąc naiwny pogląd, że typ reprezentuje zestaw wartości, a więc A <: B na wszelki wypadek, gdy każda wartość typu A jest również wartością typu B. Jest to również czasem nazywany „pisaniem na uszlachetnianiu”, a dobrym tekstem do przeczytania na temat oryginalnej motywacji są typy wyrafinowania Freeman & Pfenning dla ML . Aby zapoznać się z najnowszym wcieleniem w języku F #, przeczytaj Bengston i in., Typy wyrafinowania dla bezpiecznych implementacji. Podstawową ideą jest wzięcie istniejącego języka programowania, który może (ale nie musi) już mieć typy, ale w którym typy nie gwarantują aż tyle (np. Tylko bezpieczeństwa pamięci), i rozważenie drugiej warstwy typów, wybierając podzbiory programów z dodatkowe, bardziej precyzyjne właściwości.
(Teraz argumentowałbym, że teoria matematyczna leżąca u podstaw tej interpretacji podtypów wciąż nie jest tak dobrze rozumiana, jak powinna być, a być może dlatego, że jej zastosowania nie są tak powszechnie doceniane, jak powinny. Jednym z problemów jest to, że zestaw interpretacja typów "jest zbyt naiwna, dlatego czasami jest raczej porzucana niż dopracowywana. Na inny argument, że ta interpretacja podtypów zasługuje na więcej uwagi matematycznej, przeczytaj wprowadzenie do Podprzestrzeni Paula Taylora w abstrakcyjnym dualności kamienia .)