завершая программу? try тут не помогает.
при компиляции её надо ловить, через -Werror
Её можно отловить ещё даже не запуская программу. -Wall -Werror -Wincomplete-patterns
-- то что выше, только вместо SomeException конкретная ошибка есть для ошибки патмача {-# LANGUAGE TypeApplications #-} {-# LANGUAGE BlockArguments #-} import Control.Exception (PatternMatchFail, try, evaluate) import Data.Either (isRight) matched :: a -> IO Bool matched x = isRight <$> try @PatternMatchFail (evaluate x) main = sequence [ matched case 1 of 2 -> 3 , matched case 1 of 1 -> 3 , matched let !1 = 2 in 3 , matched let !1 = 1 in 3 , matched (myHead []) ] where myHead (x:xs) = x -- >>> main -- [False,True,False,True,False]
Во. Работает. Только без evaluate. С ним не работало.
без evaluate можно легко не словить ошибку
Обсуждают сегодня