Overlapping pattern matches

912 views Asked by At

I have the following code:

test :: String -> Bool
test "g" = True
test "global" = True
test _ = False

When I load it into GHCi (7.0.3), I get:

Warning: Pattern match(es) are overlapped
         In an equation for `test': test "g" = ...

Is this a bug or am I missing something here?

The following hold:

test "" == False
test "g" == True
test "gl" == False
test "global" == True
test "globalx" == False

UPDATE:

I am using {-# LANGUAGE OverloadedStrings #-}.

2

There are 2 answers

0
ehird On BEST ANSWER

This is GHC bug #5117, arising from the use of the OverloadedStrings extension. It should be fixed in GHC 7.2.

As a workaround, you could turn off OverloadedStrings for the module with {-# LANGUAGE NoOverloadedStrings #-}, or turn off the warning with {-# OPTIONS_GHC -fno-warn-overlapping-patterns #-}. Or just ignore it :)

0
Daniel Fischer On

Have you turned on OverloadedStrings? If I remember correctly, that causes 'spurious' overlapping patterns warnings, because in that case it's not clear that e.g. "g" and "global" are mutually exclusive.