我有一个接受整数的函数,检查它是否等于 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/

10-17 00:41