2012-01-24 4 views
6

Sono nuovo su SML e sto usando il dialetto SMLNJ.Typecasting in SML

Per qualche scopo ho cercato di digitare 3 a 3.0 (int a reale).

Impossibile trovare una via d'uscita. Come posso fare questo? Come posso convertire tra i tipi?

+0

Non importa, ho trovato la risposta. Basta digitare 'reale (2)' per esempio, per convertire 2 (int) in 2.0 (reale). – Dave

risposta

12

È possibile utilizzare la funzione real (o Real.fromInt) per convertire un int ad un real.

Per ulteriori informazioni è possibile visualizzare un elenco di funzioni disponibili nell'ambiente di livello superiore here e una panoramica della libreria di base here.

+0

Grande, penso che questo sia profondo;). int e real sono di 2 tipi diversi e SML non converte da type 'int' a 'real'. – suhao399

5

SML non ha digitazioni. Qualsiasi mappatura tra tipi deve essere eseguita attraverso le funzioni.

real(3) sembra e si comporta in modo simile a un typecast in stile C, ma real: int -> real è solo un'altra funzione nella base standard. int(3.0), d'altra parte, non funziona, perché la funzione int non esiste.

In generale, quando è necessario eseguire la conversione da un tipo all'altro, basta scavare nella libreria per una funzione appropriata. Nel caso real -> int, la ricerca di "reale -> int" nello top level environment restituisce round, trunc, floor e ceil.