
18 Oct
2011
18 Oct
'11
4:52 a.m.
On 10/17/2011 04:53 PM, Henk-Jan van Tuyl wrote:
On Mon, 17 Oct 2011 17:39:49 +0200, Hugo Ferreira
wrote: 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?
The pattern in the line bigrams xs = take 2 xs : bigrams (tail xs) matches any list, even empty lists
Thank you. Hugo F.
Regards, Henk-Jan van Tuyl