Краткий ответ - «проверить дополнительные свойства существующего кода». Более длинный ответ следует.
Я не уверен, что «неявный» против «явный» является хорошей терминологией. Это различие иногда называют «структурным» и «номинальным» подтипом. Тогда есть и второе различие в возможных интерпретациях структурных подтипов (описано ниже). Обратите внимание, что все три интерпретации подтипов действительно ортогональны, и поэтому не имеет смысла сравнивать их друг с другом, вместо того, чтобы понимать использование каждого из них.
Основное операционное различие в интерпретации отношения структурного подтипа A <: B состоит в том, засвидетельствовано ли оно реальным принуждением с вычислительным контентом (во время выполнения / времени компиляции), или оно может быть засвидетельствовано насильственным принуждением. Если первое, важное теоретическое свойство, которое должно соблюдаться, - это «когерентность», т. Е. Если есть несколько способов показать, что A является субструктурным подтипом B, каждое из сопутствующих приведений должно иметь одинаковое вычислительное содержание.
Ссылка, которую вы дали, похоже, имеет в виду вторую интерпретацию структурного подтипа, где A <: B может быть засвидетельствовано принуждением к идентичности. Это иногда называют «интерпретацией подмножества» подтипов, принимая наивное представление о том, что тип представляет набор значений, и поэтому A <: B на всякий случай, когда каждое значение типа A также является значением типа B. Это также иногда называемый «типизацией уточнения», и хорошая статья для оригинальной мотивации - это « Уточнение типов» Фримена и Пфеннинга для ML . Для более позднего воплощения в F # вы можете прочитать Bengston и др., Типы уточнения для безопасных реализаций., Основная идея состоит в том, чтобы взять существующий язык программирования, который может (или может не иметь) уже иметь типы, но в которых типы не гарантируют всего этого (например, только безопасность памяти), и рассмотреть второй уровень типов, выбирающий подмножества программ с дополнительные, более точные свойства.
(Теперь я бы сказал, что математическая теория, лежащая в основе этой интерпретации подтипирования, все еще не так хорошо понята, как следовало бы, и, возможно, это связано с тем, что ее использование не так широко ценится, как следовало бы. интерпретация типов слишком наивна, и поэтому иногда от нее отказываются, а не уточняют. Для еще одного аргумента, что эта интерпретация подтипов заслуживает большего математического внимания, прочитайте введение к подпространствам Пола Тейлора в книге «Абстрактная каменная двойственность» .)