ahm*_*106 1 error-handling haskell function
我得到了一些代码:
setA :: Integer -> Integer
setA 3 = 5
setA 5 = 6
setA 7 = error "some error one"
setA _ = error "some error two"
Run Code Online (Sandbox Code Playgroud)
现在我尝试写另一个函数
checkError :: Integer -> Bool
checkError x = if HERE_TO_CHECK_IF setA x RETURNS some error two
then False
else True
Run Code Online (Sandbox Code Playgroud)
但我怎么能这样做?
谢谢
正如在其他答案中已经说过的那样,你应该避免使用error而是使用
setA :: Integer -> Either String Integer
setA 3 = Right 5
setA 5 = Right 6
setA 7 = Left "some error one"
setA _ = Left "some error two"
checkError :: Either String Integer -> Bool
checkError (Left _) = False
checkError (Right _) = True
Run Code Online (Sandbox Code Playgroud)
但是,如果你不能做到这一点,看看源代码的勺子包,看看怎么做你的教授是要求.这很危险.
然后你可以说
checkError :: Integer -> Bool
checkError x = case teaspoon x of
Nothing -> False
Just _ -> True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
797 次 |
| 最近记录: |