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,由使用OverloadedStrings扩展引起。它应该在 GHC 7.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 回答