¿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?

Respuestas a la pregunta(6)

Su respuesta a la pregunta