¿Cómo escribir una función para números genéricos?
Soy bastante nuevo en F # y encontrar la inferencia de tipos realmente es algo genial. Pero actualmente parece que también puede conducir a la duplicación de código, que esno es una cosa genial. Quiero sumar los dígitos de un número como este:
let rec crossfoot n =
if n = 0 then 0
else n % 10 + crossfoot (n / 10)
crossfoot 123
Esto imprime correctamente6
. Pero ahora mi número de entrada no se ajusta a 32 bits int, así que tengo que transformarlo a.
let rec crossfoot n =
if n = 0L then 0L
else n % 10L + crossfoot (n / 10L)
crossfoot 123L
Entonces unBigInteger
viene a mi manera y adivina qué ...
Por supuesto, solo podría tener elbigint
versión y conversión de parámetros de entrada y parámetros de salida hacia abajo según sea necesario. Pero primero supongo que usarBigInteger
terminadoint
tiene algunas penalizaciones de rendimiento. Segundolet cf = int (crossfoot (bigint 123))
simplemente no se lee bien.
¿No hay una forma genérica de escribir esto?