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.