2013-12-18 102 views
5

我正在考慮我在Haskell中的第幾個步驟,並且我試圖將字符串轉換爲整數,但我沒有管理。我看過類似的問題,但我仍然不確定。Haskell String-> Int類型轉換

我想要做的就是轉換,例如, '6'"271"整數,即分別爲6271。我該怎麼做呢?

類似的是,在Python中,我可以很容易地做到這一點:例如, int("2723")將完成工作。

+2

您正在尋找[閱讀](http://hackage.haskell.org/package/base-4.6.0.1/docs/Prelude.html#v:read) – DiegoNolan

+2

第一個結果如果你google「haskell string以int「是一個[stackoverflow](http://stackoverflow.com/questions/2468410/convert-string-to-integer-float-in-haskell)後解釋如何使用'讀''。 – bheklilr

回答

10

如果你知道該字符串是一個有效的整數,或者你不介意它炸燬,如果不是這種情況,read將工作。如果你不熟悉Haskell的類型類,只知道,你可能要告訴哈斯克爾你想閱讀什麼類型:

main :: IO() 
main = do 
    let x = read "271" :: Integer 
    print x 

你並不總是必須這樣做,如果Haskell有一些其他的方式知道你想要什麼類型,就像你繼續做算術一樣。

如果你不知道確保該字符串是一個有效的數字,最近基地的版本(不知道從什麼時候起)包括功能readMaybe,將安全返回Nothing如果它不是一個可讀的整數。

+0

謝謝,雖然我的問題是重複的,答案已經提供。你能否通過其他方式將我鏈接到資源? (Int - > String?) – Newb

+0

@Newb爲了你想['show'](http://hackage.haskell.org/package/base-4.6.0.1/docs/Prelude.html#v:show)。 – Onyxite

+0

@New與'read'相反的是'show'。大多數教程很早就涵蓋了這些功能,到目前爲止你看到了什麼?在試圖正確使用之前,最好先嚐試幾個。 – bheklilr