簡體   English   中英

哈斯克爾不能讀這個雙:“。3”。 這是一個錯誤嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM