[英]Haskell cant read this double: “.3”. Is this a bug?
GHC Haskell似乎需要在小數點前面加一個數字才能讀取Double。 這是代碼:
main :: IO ()
main = do
let d1 = read "0.3" :: Double
d2 = read ".3" :: Double
print d1
print d2
運行它會產生:
0.3
*** Exception: Prelude.read: no parse
這是一個GHC錯誤還是一個主要限制?
(我嘗試使用C,Javascript和MS Excel閱讀“.3”,所有這些都可以成功解析“.3”並將其理解為一個數字。我想我已經看到了這個問題在我的其他方面的影響程序,包括使用parseargs包讀取命令行參數,並使用Yesod的MForms以html形式讀取雙打。)
是否有針對此問題的已知修復或解決方法?
來自Haskell的報告:
2.5數字文字
浮動文字必須包含小數點前后的數字; 這確保了小數點不會被誤認為點字符的另一種用法
所以這是預期的行為。
我接受了iand675的回答,但他只是留下了評論,所以我在這里復制它:
Haskell中具有Read實例的所有標准類型都被編寫為讀取有效的Haskell。 如果您使用不可解析的輸入讀取作為有效的Haskell,您可能應該使用除讀取之外的內容。
Lee的答案很有幫助,因為它定義了Haskell的數字文字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.