Haskell: Konvertieren von Int in String

198

Ich weiß, dass Sie a Stringin eine Zahl umwandeln können mit read:

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

Aber wie erfassen Sie die StringDarstellung eines IntWertes?

Squirrelsama
quelle

Antworten:

286

Das Gegenteil von readist show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3
Futter
quelle
38
@Lega: Möglicherweise finden Sie dies nützlich: haskell.org/hoogle/?hoogle=Int+-%3E+String .
Kennytm
3
@ KennyTM Viele Leute werden diesen Link nützlich finden! Ein Link allein ist +1, aber für die Darstellung, wie man ihn benutzt ... Das ist +10 Danke :)
AdR
Beachten Sie, dass einige Organisationen / Standards die Verwendung von "show" aufgrund seines extremen Polymorphismus dringend empfehlen. Eine typspezifische Funktion (oder im schlimmsten Fall ein Wrapper um Show) wäre hilfreich.
Jon Watte
@ JonWatte "Könnte", nicht "würde". Auf der Ebene der Allgemeinheit dieser Frage halte ich Ihren Vorschlag nicht für umsetzbar.
Duplode
Gibt es eine Möglichkeit, dies manuell zu tun, ohne Systemfunktionen zu verwenden?
Lesolorzanov
4

Ein Beispiel basierend auf Chucks Antwort:

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

Beachten Sie, dass ohne die showdritte Zeile nicht kompiliert wird.

prasad_
quelle
4

Jeder, der gerade mit Haskell anfängt und versucht, ein Int zu drucken, verwendet:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
Arlind
quelle