Haskell: Convertendo Int em String


198

Eu sei que você pode converter um Stringem um número com read:

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

Mas como você pega a Stringrepresentação de um Intvalor?

Respostas:


286

O oposto de readé show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega: Você pode achar isso útil: haskell.org/hoogle/?hoogle=Int+-%3E+String .
Kennytm

3
@ KennyTM Muitas pessoas acharão esse link útil! Apenas um link é +1, mas para mostrar como usá-lo ... Isso é +10 Obrigado :) #
860

Observe que algumas organizações / padrões desencorajam fortemente o uso de "show" devido ao seu polimorfismo extremo. Uma função específica do tipo (ou, na pior das hipóteses, wrapper em torno do show) seria útil.
Jon Watte

@ JonWatte "Pode", não "faria". No nível de generalidade desta pergunta, não acho que sua sugestão seja acionável.
Duplode

Existe uma maneira de fazer isso manualmente sem usar as funções do sistema?
### lesolorzanov #

4

Um exemplo baseado na resposta de Chuck:

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

Observe que sem a showterceira linha não será compilada.


4

Qualquer um que esteja começando com Haskell e tentando imprimir um Int, use:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.