Jawaban singkatnya adalah "untuk memverifikasi properti tambahan dari kode yang ada". Jawaban yang lebih panjang mengikuti.
Saya tidak yakin "implisit" vs "eksplisit" adalah terminologi yang baik. Perbedaan ini kadang-kadang disebut subtyping "struktural" vs "nominal". Kemudian ada juga perbedaan kedua dalam kemungkinan interpretasi subtyping struktural (dijelaskan secara singkat). Perhatikan bahwa ketiga interpretasi subtyping benar-benar ortogonal, sehingga tidak masuk akal untuk membandingkannya satu sama lain, daripada memahami penggunaan masing-masing.
Perbedaan operasional utama dalam menafsirkan hubungan subtyping struktural A <: B adalah apakah itu disaksikan oleh paksaan nyata dengan konten komputasi (runtime / compiletime), atau apakah itu dapat disaksikan oleh paksaan identitas. Jika yang pertama, properti teoretis penting yang harus dimiliki adalah "koherensi", yaitu, jika ada beberapa cara untuk menunjukkan bahwa A adalah subtipe substruktural dari B, masing-masing paksaan yang menyertainya harus memiliki konten komputasi yang sama.
Tautan yang Anda berikan tampaknya memiliki interpretasi kedua tentang subtyping struktural dalam pikiran, di mana A <: B dapat disaksikan oleh pemaksaan identitas. Ini kadang-kadang disebut "subset interpretasi" dari subtyping, mengambil pandangan naif bahwa suatu tipe mewakili satu set nilai, dan jadi A <: B kalau-kalau setiap nilai tipe A juga merupakan nilai tipe B. Itu juga kadang-kadang disebut "mengetik perbaikan", dan makalah yang baik untuk membaca untuk motivasi asli adalah jenis Refemanement Freeman & Pfenning untuk ML . Untuk inkarnasi yang lebih baru di F #, Anda dapat membaca Bengston et al, tipe perbaikan untuk implementasi yang aman. Ide dasarnya adalah untuk mengambil bahasa pemrograman yang ada yang mungkin (atau mungkin tidak) sudah memiliki tipe tetapi di mana tipe tidak menjamin semua yang banyak (misalnya, hanya keamanan memori), dan mempertimbangkan lapisan kedua jenis memilih subset dari program dengan properti tambahan, lebih tepat.
(Sekarang, saya berpendapat bahwa teori matematika di balik interpretasi subtyping ini masih belum dipahami sebagaimana mestinya, dan mungkin itu karena penggunaannya tidak dihargai secara luas sebagaimana mestinya. Satu masalah adalah bahwa "set interpretasi tipe nilai terlalu naif, sehingga terkadang diabaikan dan tidak disempurnakan. Untuk argumen lain bahwa interpretasi subtyping ini layak mendapat perhatian matematis, bacalah pengantar Subspaces Paul Taylor dalam Abstrak Dualitas Batu .)