Здається, що всі нові мови програмування або, принаймні, ті, що стали популярними, використовують умовивід. Навіть Javascript отримав типи та умови виводу, хоча різні реалізації (Acscript, typecript тощо). Мені це здається чудово, але мені цікаво, чи є компроміси чи чому, скажімо, Java або старі добрі мови не мають висновку про тип
- При оголошенні змінної в Go, не вказуючи її тип (використовуючи var без типу або синтаксис: =), тип змінної виводиться зі значення праворуч.
- D дозволяє писати великі фрагменти коду без надмірного введення типів, як це роблять динамічні мови. З іншого боку, статичний висновок виводить типи та інші властивості коду, надаючи найкраще як статичному, так і динамічному світам.
- Двигун виводу типу в Rust досить розумний. Це більше, ніж дивитися на тип r-значення під час ініціалізації. Він також виглядає, як змінна використовується згодом для висновку про її тип.
- Swift використовує умовивід типу для опрацювання відповідного типу. Вибір типу дозволяє компілятору автоматично виводити тип певного виразу, коли він компілює ваш код, просто досліджуючи надані вами значення.
var
і C ++ auto
) і типом виводу (двонаправленим, як Haskell let
). У першому випадку тип імені може бути виведений лише з його ініціалізатора - його використання повинно відповідати типу імені. В останньому випадку тип імені може бути встановлений також із його використання - що корисно тим, що ви можете писати просто []
для порожньої послідовності, незалежно від типу елемента, або newEmptyMVar
для нової нульової змінної посилання незалежно від референта тип.
var
тому що іноді це може пошкодити читання.