Standardowa funkcja biblioteki SML Int.toString przedrostek liczb ujemnych z ~
zamiast -
. Czy istnieje funkcja biblioteki korzystać -
zamiast krótkiego pismaJak przekonwertować ujemne liczby całkowite na ciągi w SML ze znakiem minus zamiast tyldy?
fun i2s i =
if i < 0 then "-"^Int.toString (~i) else Int.toString i
Zauważ, że twoja funkcja będzie powodować OverflowError w niektórych przypadkach, ponieważ na typowych architekturach najmniej reprezentowalna liczba całkowita ma większą wartość niż najwyższa reprezentowalna liczba całkowita. (Na przykład, 32-bitowe liczby całkowite ze znakiem uzupełnienia dla dwóch uzupełniających się wartości mieszczą się w zakresie od ~ 2147483648 do 2147483647.) To może ale nie musi być akceptowalne dla twojego przypadku użycia. Jeśli * nie jest * dopuszczalne, to jedną z opcji jest 'fun i2s i = String.map (fn #" ~ "=> #" - "| c => c) (Int.toString i)'. – ruakh