有一個很好的理由Prelude.read的類型是爲什麼Haskell的Prelude.read不會返回Maybe?
read :: Read a => String -> a
,而不是返回一個Maybe
價值?
read :: Read a => String -> Maybe a
由於字符串可能無法被解析的哈斯克爾,不會後者可以更自然?
甚至Either String a
,其中Left
將包含原始字符串,如果它不解析,並且Right
結果如果它?
編輯:
我不想讓別人寫一個相應的包裝我。只是爲了保證這樣做是安全的。
爲什麼'take'不接受任何'Num a => a'?爲什麼列表中有'fmap'的特殊情況?爲什麼'Monad'實例不需要'Functor'?我希望答案與這些和相關問題的答案類似。 – delnan
那麼,這就是爲什麼我按照我的方式措辭,讓選項開放,沒有什麼好的理由。雖然我也懷疑可能沒有像您提供的衆所周知的示例一樣,但值得一提的是確保編寫我自己的包裝不會在下游創建不可預見的問題。 –
我希望很快會添加'readMaybe'函數。 – augustss