Tipo de adición (+) en F #
Acabo de enterarme de que OCAML debe tener un.
postfix para hacer aritmética flotante. Un ejemplo sería3. +. 4.
que es igual a7.
(flotante). Sin embargo, F # maneja la aritmética de flotante y entero de la misma manera, por lo que tanto3 + 4
(int) y3. + 4.
(flotante) funciona.
F # have+
asignado naturalmente a int solet add a b = a + b
es de tipoint -> int -> int
. Y de hecho(+)
me daval it : (int -> int -> int) = <fun:it@6-1>
.
Eso lleva a la siguiente secuencia que creo que es bastante contra-intuitiva:
> 3. + 4.;;
val it : float = 7.0
> (+);;
val it : (int -> int -> int) = <fun:it@8-2>
Entonces mi pregunta es: ¿La "sobrecarga" se realiza mediante un mecanismo / caso especial en el compilador o es algo que abarca todo el lenguaje, por lo que potencialmente puedo definir una función llamadaadd
(o cualquier otra cosa) que tenga una definición para enteros y otra para flotantes (o cualquier otro tipo).