当我在整数列表上"读取"时如何捕获错误?

dev*_*vel 5 haskell

我需要帮助,我必须阅读这样["1", "2", "3"]的列表,并制作一个整数列表,[1,2,3]所以我使用read.

问题是,当列表看起来像["1", "2", "a"]程序因为错误而退出时,其中有一个字符.

如何检查或抛出错误以防止此错误?

n. *_* m. 6

你应该使用reads,而不是read.

Prelude> :m Data.Maybe
Prelude Data.Maybe> (map (fmap fst . listToMaybe . reads) ["1", "2", "3"]) :: [Maybe Integer]
[Just 1,Just 2,Just 3]
Prelude Data.Maybe> (map (fmap fst . listToMaybe . reads) ["1", "2", "a"]) :: [Maybe Integer]
[Just 1,Just 2,Nothing]
Prelude Data.Maybe> 
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将很乐意将"123abc"变为"123".您还需要检查元组的第二个元素是否为空以防止这种情况. (5认同)