
#14569: refutable let bindings produce "irrefutable pattern failed" errors -------------------------------------+------------------------------------- Reporter: int-e | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Poor/confusing | Unknown/Multiple error message | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by int-e): Replying to [comment:1 simonpj]:
I rather agree. Actually even 7.10 had this behaviour. Try {{{ main = let [x] = [] in print (x::Int) }}} and you get the runtime crash (with 7.10) {{{ run: T14569.hs:3:12-19: Irrefutable pattern failed for pattern [x] }}}
The difference here is that here the pattern is actually (implicitly) irrefutable as per the Haskell 2010 language report. However,
The real point is: this talk of "irrefutable" patterns is confusing, especially since this one is manifestly refutable.
This is a good point, the nomenclature is quite confusing, not just for beginners, but for anyone who isn't intimately familiar with the section on pattern matching in the Haskell report. I wouldn't be sad to see those errors replaced by ordinary incomplete pattern match errors. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14569#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler