Parece que todos los nuevos lenguajes de programación o al menos los que se hicieron populares usan la inferencia de tipos. Incluso Javascript obtuvo tipos e inferencia de tipos a través de diversas implementaciones (Acscript, mecanografiado, etc.). Me parece genial, pero me pregunto si hay compensaciones o por qué digamos que Java o los viejos buenos idiomas no tienen inferencia de tipos
- Al declarar una variable en Go sin especificar su tipo (usando var sin un tipo o la sintaxis: =), el tipo de la variable se deduce del valor en el lado derecho.
- D permite escribir fragmentos de código grandes sin especificar tipos de forma redundante, como hacen los lenguajes dinámicos. Por otro lado, la inferencia estática deduce tipos y otras propiedades de código, dando lo mejor de los mundos estático y dinámico.
- El motor de inferencia de tipos en Rust es bastante inteligente. Hace más que mirar el tipo del valor r durante una inicialización. También se ve cómo se usa la variable después para inferir su tipo.
- Swift usa la inferencia de tipos para calcular el tipo apropiado. La inferencia de tipos permite que un compilador deduzca el tipo de una expresión particular automáticamente cuando compila su código, simplemente examinando los valores que proporciona.
var
y C ++ auto
) y la inferencia de tipo (bidireccional, como Haskell let
). En el primer caso, el tipo de un nombre puede inferirse únicamente de su inicializador; sus usos deben seguir el tipo del nombre. En el último caso, el tipo de un nombre también puede inferirse de sus usos, lo cual es útil porque puede escribir simplemente []
para una secuencia vacía, independientemente del tipo de elemento, o newEmptyMVar
para una nueva referencia mutable nula, independientemente del referente tipo.
var
porque a veces puede dañar la legibilidad.