2008-10-25 15 views
6

¿Cómo puedo convertir un Int64 en un tipo Int32 en F # sin usar el Microsoft.FSharp.Compatibility.Int32.of_int64?F # int64 a int

que estoy haciendo esto porque no parece interactivo para trabajar cuando intento:

open Microsoft.FSharp.Compatibility 

Con FSharp.PowerPack añade como una referencia que dice:

FS0039 de error: El 'Compatibilidad espacio de nombres ' no está definido.

Editar: ¿Alguien tiene una respuesta a la pregunta? Las sugerencias sobre los tipos int son útiles e informativas, pero estoy teniendo el mismo problema al abrir el espacio de nombres del paquete de poder en F # interactivo.

Respuesta

15

F # 1.9.6 tiene una función de conversión de tipo para que pueda hacer esto:

let num = 1000 
let num64 = int64(num) 
10

en cuenta que en este tipo de conversión, cuando se reduce el tamaño de un valor, los bytes más significativos se tiran , por lo que sus datos podrían estar truncado:

> let bignum = 4294967297L;; 
val bignum : int64 

> let myint = int32(bignum);; 
val myint : int32 

> myint;; 
val it : int32 = 1 
1

Tenga en cuenta que las funciones para convertir a cada tipo entero tienen los mismos nombres que los propios tipos, y se definen en la especificación de la biblioteca (véase abajo). (Con el lanzamiento de la CTP (1.9.6.2), una gran cantidad de la biblioteca y los espacios de nombres cambiaron un poco en comparación con versiones anteriores, pero probablemente serán más 'estable' se mueve hacia adelante.)

http://research.microsoft.com/fsharp/manual/FSharp.Core/Microsoft.FSharp.Core.Operators.html

+0

El enlace está roto. –