Как отловить ошибку в Haskell и игнорировать ее? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть функция, которая принимает целое число, проверяет, равно ли оно 1 , если yes возвращает 1 else error "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 = (func 2) для обоих z в case (Just z) of.еще, так что я понимаю, здесь ошибка не Ничего

Так что же такое ошибка "SomeError" ?как я могу узнать, что (Just z) является ошибкой при использовании case (Just z) of

1 Ответ

0 голосов
/ 17 декабря 2018

Старайтесь избегать ошибок, где это возможно.Измените 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 -> ...
...