¿Cómo ML realiza la inferencia de tipos en la siguiente definición de función:Explicar ML inferencia de tipos a un programador de C++
let add a b = a + b
¿Es como las plantillas de C++ donde ningún tipo de comprobación se realiza hasta el punto de instancias de plantilla después de que si el tipo admite las operaciones necesarias, la función funciona o se genera un error de compilación?
es decir, por ejemplo, la siguiente plantilla de función
template <typename NumType>
NumType add(NumType a, NumType b) {
return a + b;
}
funcionará para
add<int>(23, 11);
pero no funcionará para
add<ostream>(cout, fout);
es lo que supongo es correcta o ¿La inferencia del tipo ML funciona de manera diferente?
PD: Perdón por mi pobre inglés; no es mi lengua materna
¿Está preguntando sobre la inferencia de tipos o la verificación de tipos? – sepp2k
inferencia. ¿Qué tipo de tipos se deducen de la definición de la función ML en mi ejemplo? –