[Haskell-cafe] Ensuring all values of an ADT are explicitly handled OR finding all occurrences of type X in my app

Stefan Monnier monnier at iro.umontreal.ca
Tue Jan 31 17:11:50 UTC 2017

> I think the best solution here would be a new warning,
> say -fwarn-wildcard-patterns. This would be a simple syntactic check
> for a wildcard pattern anywhere in the module.

Note that

   case <foo>
   | [] -> ...
   | (_ : xs) -> ...

also contains a wildcard-pattern.  So emitting a warning for every use
of wildcard patterns would likely lead to a lot of pain.

You'd instead want to warn about "default branch", e.g. 

   case <foo>
   | [] -> ...
   | (1 : xs) -> ...
   | (_ : xs) -> ...

here the wildcard pattern does correspond to a "default branch" and
might hence deserve a warning.


More information about the Haskell-Cafe mailing list