Tampaknya semua bahasa pemrograman baru atau setidaknya yang menjadi populer menggunakan inferensi tipe. Bahkan Javascript mendapat jenis dan tipe inferensi melalui berbagai implementasi (Acscript, typescript dll). Itu tampak hebat bagi saya tapi saya bertanya-tanya apakah ada trade-off atau mengapa katakanlah Java atau bahasa-bahasa lama yang baik tidak memiliki inferensi jenis
- Ketika mendeklarasikan variabel di Go tanpa menentukan jenisnya (menggunakan var tanpa tipe atau: = sintaks), tipe variabel disimpulkan dari nilai di sisi kanan.
- D memungkinkan penulisan fragmen kode besar tanpa menentukan jenis yang berlebihan, seperti yang dilakukan oleh bahasa dinamis. Di sisi lain, inferensi statis menyimpulkan jenis dan properti kode lainnya, memberikan yang terbaik dari dunia statis dan dinamis.
- Jenis mesin inferensi di Rust cukup cerdas. Itu lebih dari melihat jenis nilai-r selama inisialisasi. Ini juga terlihat bagaimana variabel digunakan setelahnya untuk menyimpulkan tipenya.
- Swift menggunakan inferensi tipe untuk mengetahui tipe yang sesuai. Ketik inferensi memungkinkan kompiler untuk menyimpulkan jenis ekspresi tertentu secara otomatis ketika mengkompilasi kode Anda, hanya dengan memeriksa nilai-nilai yang Anda berikan.
var
dan C ++ auto
) dan tipe inferensi (dua arah, seperti Haskell let
). Dalam kasus sebelumnya, jenis nama dapat disimpulkan dari penginisialisasi saja — penggunaannya harus mengikuti jenis nama. Dalam kasus yang terakhir, jenis nama dapat disimpulkan dari penggunaannya juga — yang berguna karena Anda dapat menulis hanya []
untuk urutan kosong, terlepas dari jenis elemen, atau newEmptyMVar
untuk referensi nol yang dapat diubah baru, terlepas dari referensi mengetik.
var
karena kadang-kadang dapat merusak keterbacaan.