Tipo de adição (+) em F #
Acabei de saber que a OCAML precisa ter um.
postfix para fazer aritmética de flutuação. Um exemplo seria3. +. 4.
que é igual a7.
(flutuante). No entanto, o F # manipula aritmética float e número inteiro da mesma maneira, portanto,3 + 4
(int) e3. + 4.
(flutuante) funcion
F # tem+
naturalmente atribuído a int solet add a b = a + b
é do tipoint -> int -> int
. E realmente(+)
me dával it : (int -> int -> int) = <fun:it@6-1>
.
Isso leva à seguinte sequência, que eu acho bastante contra-intuitiva:
> 3. + 4.;;
val it : float = 7.0
> (+);;
val it : (int -> int -> int) = <fun:it@8-2>
Então minha pergunta é: A "sobrecarga" é feita por um mecanismo / caso especial no compilador ou é uma coisa em toda a linguagem, para que eu possa definir uma função chamadaadd
(ou qualquer outra coisa) que possua uma definição para números inteiros e outra para flutuadores (ou qualquer outro tipo