Haskell: Conversion d'Int en chaîne


198

Je sais que vous pouvez convertir un Stringnombre en read:

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

Mais comment saisir la Stringreprésentation d'une Intvaleur?

Réponses:


286

L'opposé de readest show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega: Vous pouvez trouver cela utile: haskell.org/hoogle/?hoogle=Int+-%3E+String .
kennytm

3
@ KennyTM Beaucoup de gens trouveront ce lien utile! Un lien seul est +1, mais pour montrer comment l'utiliser ... C'est +10 Merci :)
CoR

Notez que certaines organisations / normes déconseillent fortement l'utilisation de "show" en raison de son polymorphisme extrême. Une fonction spécifique au type (ou, dans le pire des cas, un wrapper autour de show) serait utile.
Jon Watte

@JonWatte "Pourrait", pas "pourrait". Au niveau de la généralité de cette question, je ne pense pas que votre suggestion soit réalisable.
duplode

Existe-t-il un moyen de le faire manuellement sans utiliser les fonctions système?
lesolorzanov

4

Un exemple basé sur la réponse de Chuck:

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

Notez que sans la showtroisième ligne ne sera pas compilée.


4

Quiconque commence par Haskell et essaie d'imprimer un Int, utilise:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.