2012-01-24 61 views
5

我有以下代碼:重疊模式匹配

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 

UPDATE:

我使用{-# LANGUAGE OverloadedStrings #-}

回答

9

這是GHC bug #5117,由於使用OverloadedStrings擴展引起的。它應該在GHC 7.2中修復。

作爲解決方法,您可以通過{-# LANGUAGE NoOverloadedStrings #-}關閉OverloadedStrings模塊,或者使用{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-}關閉警告。或者只是忽略它:)

3

你打開OverloadedStrings?如果我沒有記錯的話,會導致「虛假」重疊模式警告,因爲在這種情況下,並不清楚例如「g」和「全球」是相互排斥的。