[Haskell-beginners] Non exhaustive pattern match not flagged?

Hugo Ferreira hmf at inescporto.pt
Mon Oct 17 17:39:49 CEST 2011


Hello,

I am using the GHC compiler with the -W flag.
When I compile:

f :: [a] -> [b] -> Int
--f [] _  = error "undefined for empty array"
f _ []  = error "undefined for empty array"
f (_:xs) (_:ys) = length xs + length ys

I get a warning:

  Warning: Pattern match(es) are non-exhaustive
              In an equation for `f': Patterns not matched: [] (_ : _)

as expected. But for:

bigrams :: [a] -> [[a]]
--bigrams [] = []
bigrams [_] = []
bigrams xs = take 2 xs : bigrams (tail xs)

I don't. Why is the first predicate not detected as missing?

TIA,
Hugo F.



More information about the Beginners mailing list