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?

Jawaban:


286

Kebalikan dari readadalah show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

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.


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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.