我有一个接受整数的函数,检查它是否等于 1 ,如果是,则返回 1 ,否则返回错误“SomeError” 。
func i = if i == 1 then 1 else error "SomeError"
现在我有另一个函数调用此函数并检查其结果
check = let z = (func 2) in
case (Just z) of
Nothing -> do Something
_ -> do Something else
我为
z = (func 1)
中的z都尝试了z = (func 2)
和case (Just z) of
它去做其他事情,所以我在这里理解的是错误不是没有那么什么是错误“SomeError” ?我怎么知道
(Just z)
是使用case (Just z) of
的错误 最佳答案
尽量避免错误。将func
更改为
func :: Int -> Maybe Int
func 1 = Just 1
func _ = Nothing
那么您可以按照自己的方式(或类似地,无论如何)编写
check
:check = case func 2 of
Just z -> ... -- z matches whatever is wrapped by Just
Nothing -> ...
关于haskell - 如何在Haskell中捕获错误并忽略它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53807621/