2012-01-24 9 views
6

Soy nuevo en SML y estoy usando el dialecto SMLNJ.Typecasting en SML

Por algún motivo, he intentado convertir 3 a 3.0 (int en real).

No se pudo encontrar una salida. ¿Cómo puedo hacer esto? ¿Cómo puedo convertir entre tipos?

+0

No importa, encontré la respuesta. Simplemente escriba 'real (2)' por ejemplo, para convertir 2 (int) a 2.0 (real). – Dave

Respuesta

12

Puede utilizar la función real (o Real.fromInt) para convertir un int a un real.

Para obtener más información, puede ver una lista de funciones disponibles en el entorno de nivel superior here y una descripción general de la biblioteca de bases here.

+0

Genial, creo que esto es profundo;). int y real es de 2 tipos diferentes y SML no convierte de tipo 'int' a 'real'. – suhao399

5

SML no tiene typecasts. Cualquier mapeo entre tipos debe hacerse a través de funciones.

real(3) se ve y se comporta de forma parecida a un tipocast de tipo C, pero real: int -> real es simplemente otra función estándar. int(3.0), por otro lado, no funciona, porque la función int no existe.

En general, cuando necesite convertir entre tipos, simplemente buscará en la biblioteca una función apropiada. En el caso real -> int, simplemente buscando "real -> int" en el top level environment aparece round, trunc, floor y ceil.

Cuestiones relacionadas