> Interesting. I just told GHC "let 5 = 3" and got no complaint.
lazy pattern matching semantics, see:
ghci -XBangPatterns
Prelude> let { 0 = 1 } in 0
0
Prelude> let { ! 0 = 1 } in 0
*** Exception: <interactive>:3:7-13: Non-exhaustive patterns in pattern binding