我需要帮助,我必须阅读这样["1", "2", "3"]的列表,并制作一个整数列表,[1,2,3]所以我使用read.
问题是,当列表看起来像["1", "2", "a"]程序因为错误而退出时,其中有一个字符.
如何检查或抛出错误以防止此错误?
你应该使用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)