Haskell: Convertir Int a String

198

Sé que puedes convertir un Stringa un número con read:

Prelude> read "3" :: Int
3
Prelude> read "3" :: Double 
3.0

Pero, ¿cómo tomas la Stringrepresentación de un Intvalor?

Ardillasama
fuente

Respuestas:

286

Lo contrario de reades show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3
Arrojar
fuente
38
@Lega: Puede resultarle útil: haskell.org/hoogle/?hoogle=Int+-%3E+String .
kennytm
3
@ KennyTM ¡MUCHAS personas encontrarán útil ese enlace! Un enlace solo es +1, pero por mostrar cómo usarlo ... Eso es +10 Gracias :)
CDR
Tenga en cuenta que algunas organizaciones / estándares desalientan fuertemente el uso de "show" debido a su polimorfismo extremo. Sería útil una función específica de tipo (o, en el peor de los casos, envoltura alrededor del espectáculo).
Jon Watte
@JonWatte "Podría", no "haría". A nivel de generalidad de esta pregunta, no creo que su sugerencia sea procesable.
duplode
¿Hay alguna manera de hacer esto manualmente sin usar las funciones del sistema?
lesolorzanov
4

Un ejemplo basado en la respuesta de Chuck:

myIntToStr :: Int -> String
myIntToStr x
    | x < 3     = show x ++ " is less than three"
    | otherwise = "normal"

Tenga en cuenta que sin la showtercera línea no se compilará.

prasad_
fuente
4

Cualquiera que esté comenzando con Haskell e intente imprimir un Int, use:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
Arlind
fuente