
17 Oct
2011
17 Oct
'11
11:39 a.m.
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.