[英]How to check type in haskell
我不知道怎么檢查haskell中的變量類型,我的意思是,當我用getLine
從控制台讀取內容時,但我希望它是一個整數但用戶也可以輸入一個字符串,然后我不想要我程序崩潰。 例如,如果有人輸入一個字符串,我嘗試將其轉換為Int
然后它將崩潰(異常)所以我想檢查它是否可轉換。 我怎么做 ? 謝謝你的幫助 :)
main1 = do
let g <- getLine
k = g :: Int
if(k :: Int)
then ........
編輯:請注意,你總是有一個來自getLine
的字符串 - 這是它返回的類型。 如果該字符串包含數字的ascii表示,那么很好並繼續閱讀。
如果你有一個字符串g
,並且說g :: Int
那么編譯器就會這樣“不,你錯了,那是一個字符串”。 您需要執行轉換 - 解析字符串並計算Int。 最容易獲得的方法在Prelude中read
, readMaybe
在Text.Read
中Text.Read
。
Read會起作用但會拋出無效輸入的異常:
Prelude> read "4742" :: Int
4742
Prelude> read "no" :: Int
*** Exception: Prelude.read: no parse
Prelude> read "191andmore"
*** Exception: Prelude.read: no parse
也許變體是異常安全的:
Prelude> import Text.Read
Prelude Text.Read> readMaybe "181" :: Maybe Int
Just 181
Prelude Text.Read> readMaybe "no" :: Maybe Int
Nothing
Prelude Text.Read> readMaybe "211andmore" :: Maybe Int
Nothing
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.