La funzione di libreria SML standard Int.toString prefissa i numeri negativi con ~
anziché -
. C'è una funzione di libreria da utilizzare -
invece, a corto di scritturaCome convertire gli interi negativi in stringhe in SML con segno meno invece di tilde?
fun i2s i =
if i < 0 then "-"^Int.toString (~i) else Int.toString i
Si noti che la propria funzione genererà OverflowError in alcuni casi, poiché su architetture tipiche, il numero minimo rappresentabile ha un'ampiezza maggiore del più grande numero intero rappresentabile. (Ad esempio, gli interi con segno del complemento a due a 32 bit vanno da ~ 2147483648 a 2147483647.) Che può essere o non essere accettabile per il vostro caso d'uso. Se * non è * accettabile, allora un'alternativa è 'fun i2s i = String.map (fn #" ~ "=> #" - "| c => c) (Int.toString i)'. – ruakh