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?

Respuestas:


286

Lo contrario de reades show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

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á.


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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.