Haskell: Konversi Int ke String

198

Saya tahu Anda dapat mengonversi Stringke nomor dengan read:

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

Tetapi bagaimana Anda meraih Stringrepresentasi suatu Intnilai?

Squirrelsama
sumber

Jawaban:

286

Kebalikan dari readadalah show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3
Membuang
sumber
38
@Lega: Anda mungkin menemukan ini berguna: haskell.org/hoogle/?hoogle=Int+-%3E+String .
kennytm
3
@ KennyTM BANYAK orang akan menganggap tautan itu berguna! Tautan saja +1, tetapi untuk menunjukkan cara menggunakannya ... Itu +10 Terima kasih :)
CoR
Perhatikan bahwa beberapa organisasi / standar sangat tidak menyarankan penggunaan "pertunjukan" karena polimorfisme ekstremnya. Fungsi tipe-spesifik (atau, kasus terburuk, membungkus acara) akan membantu.
Jon Watte
@ JonWatte "Mungkin", bukan "akan". Pada tingkat umum dari pertanyaan ini, saya tidak berpikir saran Anda dapat ditindaklanjuti.
duplode
Apakah ada cara untuk melakukan ini secara manual tanpa fungsi sistem usyng?
lesolorzanov
4

Contoh berdasarkan jawaban Chuck:

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

Perhatikan bahwa tanpa showbaris ketiga tidak akan dikompilasi.

prasad_
sumber
4

Siapa pun yang baru memulai dengan Haskell dan mencoba untuk mencetak Int, gunakan:

module Lib
    ( someFunc
    ) where

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