Коротка відповідь - "перевірити додаткові властивості існуючого коду". Випливає довша відповідь.
Я не впевнений, що "неявна" проти "явна" є хорошою термінологією. Це відмінність іноді називають "структурним" проти "номінального" підтипу. Тоді також є друга відмінність у можливих інтерпретаціях структурного підтипу (описано коротко). Зауважте, що всі три трактування підтипів насправді є ортогональними, і тому насправді не має сенсу порівнювати їх один з одним, а не розуміти використання кожного з них.
Основна операційна відмінність інтерпретації структурного відношення підтипу A <: B полягає в тому, чи свідчить він про реальний примус з обчислювальним змістом (час виконання / компіляція), чи може бути свідком примусу ідентичності. Якщо першою, важливою теоретичною властивістю, яка має володіти, є "когерентність", тобто, якщо існує кілька способів показати, що A є підструктурним підтипом B, кожна з супутніх коеркцій повинна мати однаковий обчислювальний зміст.
Надане вами посилання, мабуть, має на увазі другу інтерпретацію структурного підтипу, де A <: B може бути свідком примусу ідентичності. Іноді це називається "підмножиною інтерпретації" підтипу, приймаючи наївне уявлення про те, що тип являє собою набір значень, і тому A <: B на всякий випадок, якщо кожне значення типу A також є значенням типу B. Це також іноді називають "уточненням набору тексту", і гарним документом для читання для оригінальної мотивації є типи доопрацювання Freeman & Pfenning для ML . Для більш недавнього втілення у F # ви можете прочитати Bengston et al., « Уточнення» для безпечних реалізацій. Основна ідея - взяти існуючу мову програмування, яка може (або не може) вже мати типи, але в яких типи не гарантують все так багато (наприклад, лише безпека пам’яті), і розглянути другий рівень типів, вибираючи підмножини програм з додаткові, точніші властивості.
(Зараз я б заперечував, що математична теорія, що стоїть за такою інтерпретацією підтипу, досі не настільки добре зрозуміла, як це має бути, і, можливо, це тому, що її використання не так широко оцінено, як повинно бути. Одна з проблем полягає в тому, що "набір значень "інтерпретація типів занадто наївна, і тому іноді її відмовляють, а не вдосконалюють. Для іншого аргументу, що ця інтерпретація підтипів заслуговує на більшу математичну увагу, читайте вступ до підрозділів Пола Тейлора в абстрактній кам'яній подвійності .)