Haskell: Chuyển đổi Int thành Chuỗi


198

Tôi biết bạn có thể chuyển đổi một Stringsố thành read:

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

Nhưng làm thế nào để bạn lấy Stringđại diện của một Intgiá trị?

Câu trả lời:


286

Ngược lại readshow.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega: Bạn có thể thấy điều này hữu ích: haskell.org/hoogle/?hoogle=Int+-%3E+String .
kennytm

3
@ KennyTM Rất nhiều người sẽ thấy liên kết đó hữu ích! Chỉ một liên kết là +1, nhưng để hiển thị cách sử dụng ... Đó là +10 Cảm ơn :)
CoR

Lưu ý rằng một số tổ chức / tiêu chuẩn không khuyến khích sử dụng "chương trình" vì tính đa hình cực đoan của nó. Một hàm cụ thể loại (hoặc, trong trường hợp xấu nhất, trình bao bọc xung quanh chương trình) sẽ hữu ích.
Jon Watte

@JonWatte "Có thể", không "sẽ". Ở cấp độ tổng quát của câu hỏi này, tôi không nghĩ đề xuất của bạn là có thể thực hiện được.
song mã

Có cách nào để làm điều này bằng tay mà không cần chức năng hệ thống không?
lesolorzanov

4

Một ví dụ dựa trên câu trả lời của Chuck:

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

Lưu ý rằng không có showdòng thứ ba sẽ không biên dịch.


4

Bất cứ ai mới bắt đầu với Haskell và cố gắng in một Int, hãy sử dụng:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.