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.