我有一个接受整数的函数,检查它是否等于 1 ,如果是,则返回 1 ,否则返回错误“ SomeError” 。 / p>
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
的错误
答案 0 :(得分:2)
请尽量避免出错。将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 -> ...