爲什麼函數read
在無法解析其參數時終止可執行文件?是否有`read`函數的完全替代方法?
在我看來,如果函數的類型爲String -> Maybe a
,返回Nothing
如果字符串不能被解析爲a
類型,但我找不到類似的東西,會更方便。我錯過了什麼?
爲什麼函數read
在無法解析其參數時終止可執行文件?是否有`read`函數的完全替代方法?
在我看來,如果函數的類型爲String -> Maybe a
,返回Nothing
如果字符串不能被解析爲a
類型,但我找不到類似的東西,會更方便。我錯過了什麼?
你正在尋找被稱爲readMaybe
和模塊Text.Read
中定義的函數:
https://hackage.haskell.org/package/base-4.9.1.0/docs/Text-Read.html#v:readMaybe
它可以自GHC 7.6。在此之前,你不得不打電話reads
,它返回一個(可能是空的)解析值列表和模式匹配。
將'readMaybe'添加到Prelude [最近在圖書館郵件列表中打開](https://mail.haskell.org/pipermail/libraries/2016-December/027496.html)。 – Alec
我不太瞭解Haskell,但我無法理解'read'函數是如何純粹的:根據定義,它有*顯着*副作用。 –
@BasileStarynkevitch'read'不會從輸入中讀取;它只是將它的參數轉換爲一個String(就像Python的__str__方法)。 – chepner
它是Prelude中的幾個函數之一(包括'head'和'tail'),它們可能已經完成了,但爲了簡單起見,它們被定義爲部分函數。 – chepner