Haskell: преобразование Int в строку


199

Я знаю, что вы можете конвертировать Stringв число с read:

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

Но как вы Stringполучаете представление Intзначения?

Ответы:


287

Противоположностью readявляется show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega: Вы можете найти это полезным: haskell.org/hoogle/?hoogle=Int+-%3E+String .
Kennytm

3
@ KennyTM Множество людей сочтут эту ссылку полезной! Только ссылка +1, но за то, как показать, как ее использовать ... Это +10 Спасибо :)
CoR

Обратите внимание, что некоторые организации / стандарты настоятельно не рекомендуют использовать «шоу» из-за его крайнего полиморфизма. Была бы полезна функция, специфичная для типа (или, в худшем случае, обертка вокруг шоу).
Джон Уотт

@JonWatte "Могу", а не "будет". На уровне общности этого вопроса, я не думаю, что ваше предложение является действенным.
дупло

Есть ли способ сделать это вручную без использования системных функций?
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)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.