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?

Antworten:


286

Das Gegenteil von readist show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

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.


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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.