Haskell: Int'yi Dizeye Dönüştürme


199

İle Stringbir sayıya dönüştürebileceğinizi biliyorum read:

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

Fakat Stringbir Intdeğerin temsilini nasıl elde edersiniz ?

Yanıtlar:


286

Karşıt readIS show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega: Bunu yararlı bulabilirsiniz: haskell.org/hoogle/?hoogle=Int+-%3E+String .
kennytm

3
@ KennyTM Birçok kişi bu bağlantıyı faydalı bulacaktır! Tek başına bir bağlantı + 1'dir, ancak nasıl kullanılacağını göstermek için ... Bu +10 Teşekkürler :)
CoR

Bazı kuruluşların / standartların, aşırı polimorfizm nedeniyle "gösteri" nin kullanılmasını şiddetle önerdiğini unutmayın. Türe özgü bir işlev (veya en kötü durumda, şovun etrafındaki sarıcı) yardımcı olacaktır.
Jon Watte

@JonWatte "Might", "olur" değil. Bu sorunun genelliği düzeyinde, önerinizin uygulanabilir olduğunu düşünmüyorum.
14'te duplode

Bunu sistem fonksiyonlarını kullanmadan manuel olarak yapmanın bir yolu var mı?
lesolorzanov

4

Chuck'ın cevabına dayanan bir örnek:

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

showÜçüncü satır olmadan derlenmeyeceğini unutmayın.


4

Haskell ile yeni başlayan ve bir Int yazdırmaya çalışan herkes şunu kullanın:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.