
#3927: Incomplete/overlapped pattern warnings + GADTs = inadequate -------------------------------------+------------------------------------- Reporter: simonpj | Owner: simonpj Type: bug | Status: new Priority: normal | Milestone: 7.10.1 Component: Compiler | Version: 6.12.1 Resolution: | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: | Blocked By: None/Unknown | Related Tickets: #4139 Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by vlopez): Instead of fixing the exhaustiveness checker, we could have some way to tell the compiler that a particular branch in a case expression (or function definition) is inaccessible. A possible syntax for this would be an "empty guard" (a vertical bar immediately followed by a semicolon). {{{ data T a where T1 :: T Int T2 :: T Bool f1 :: T a -> T a -> Bool f1 T1 T1 = True f1 T2 T2 = False f1 T1 T2 |; -- absurd branch f1 T2 T1 |; -- another absurd branch f2 :: T a -> T a -> Bool f2 a b = case (a,b) of (T1, T1) -> True (T2, T2) -> False (T1, T2) |; (T2, T1) |; }}} * In GHC 7.8.3, it results in an immediate parser error at the `;`, so it shouldn't conflict with other features. * It works well with the indentation heuristics in emacs haskell-mode (and hopefully with other editors too). -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/3927#comment:38 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler