Haskell:将Int转换为String


198

我知道您可以使用将a转换String为数字read

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

但是,如何获取值的String表示形式Int

Answers:


286

相反的readshow

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega:您可能会发现这很有用:haskell.org/hoogle/?hoogle=Int+-%3E+String
kennytm 2010年

3
@ KennyTM很多人会发现该链接有用!单独的链接是+1,但用于显示如何使用它……+10 谢谢:)
CoR

请注意,某些组织/标准由于其极端多态性而强烈不鼓励使用“显示”。特定于类型的功能(或者,最坏的情况是,在show周围包装)会有所帮助。
乔恩·瓦特

@JonWatte“可能”,而不是“将”。从这个问题的普遍性来看,我认为您的建议不可行。
duplode

有没有使用系统功能的手动方法吗?
lesolorzanov

4

一个基于查克答案的例子:

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

请注意,没有show第三行将无法编译。


4

刚开始使用Haskell并尝试打印Int的任何人,请使用:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.