У меня есть эта функция в Haskell:
test :: (Eq a) => a -> a -> Maybe a
test a b
| a == b = Just a
test _ _ = Nothing
Это то, что я получил, когда пробовал функцию с разными входами:
ghci>test 3 4
Nothing
ghci>test 3 3
Just 3
Согласно Real World Haskell, первый образец неопровержимый. Но похоже, что test 3 4
не выдает первый шаблон и не соответствует второму. Я ожидал какой-то ошибки - может быть, "неисчерпывающих стражей". Итак, что действительно происходит здесь, и есть ли способ включить предупреждения компилятора в случае, если это произойдет случайно?