6

次のコードがあります。

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

それを GHCi (7.0.3) にロードすると、次のようになります。

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

これはバグですか、それとも何か不足していますか?

以下が成立します。

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

アップデート:

を使用して{-# LANGUAGE OverloadedStrings #-}います。

4

2 に答える 2

10

これは、拡張機能の使用に起因するGHCバグ#5117です。OverloadedStringsGHC7.2で修正する必要があります。

回避策として、OverloadedStringsでモジュールをオフにする{-# LANGUAGE NoOverloadedStrings #-}か、で警告をオフにすることができます{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-}。または単にそれを無視してください:)

于 2012-01-24T20:33:14.280 に答える
3

オンにしましたOverloadedStringsか?私の記憶が正しければ、「誤った」重複パターンの警告が発生します。その場合、たとえば「g」と「global」が相互に排他的であることが明確ではないためです。

于 2012-01-24T20:34:12.963 に答える