Entiendo que bigint
no es una función sino más bien un constructor de tipos. Es por eso que esta falla:¿Qué es exactamente "bigint" en F #?
// Won't compile
let foo = 10 |> bigint
entiendo que puedo crear una nueva función que acepta un número entero y devuelve un bigint
, y luego el operador de la tubería va a funcionar.
Sin embargo, no entiendo por qué esto funciona:
let bar = bigint 10
Si bigint
es un constructor de tipos, ¿por qué no necesito new
? ¿Dónde se define exactamente bigint
como un alias del constructor de System.Numerics.BigInteger?
Gracias. No sabía que 'nuevo' era opcional. Aquí hay una lista de abreviaturas de tipo, pero omite 'bigint': http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc270597684. Veo que 'int64' es también una abreviación de tipo. Sin embargo, creo que también hay una función 'int64'. Me pregunto por qué 'bigint' es una abreviación de tipo, pero' int64' es una función. – royco
No sé si hay una razón por la que, mientras que todos los demás tipos numéricos como "int16" son "abreviaturas de tipo" y "funciones", "bigint" es solo un "tipo appreviaton". Podría especular que es porque la única razón por la que las funciones como "int16" existen en primer lugar es para proporcionar una forma de exponer las primitivas primers de IL (por ejemplo, 'conv.i2') que no tienen llamadas de" biblioteca "y suelen estar expuestas a usuarios de otros idiomas a través de funciones de "transmisión" de otros idiomas. – Brian
@Brian, perspicaz. Pero señalaré que 'decimal' disfruta de una forma de función de conversión y es simplemente una estructura simple ... quizás' bigint' merece un lugar también :) –