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.