2010-05-25 25 views
9

我碰到GHC的警告,当我编译:在Haskell中,如果绑定“隐藏现有绑定”,这意味着什么?

警告:这约束力的“拍”的阴影中的定义现有的结合“match_ignore_ancs”

这里的功能:

match_ignore_ancs (TextPat _ c) (Text t) = c t 
match_ignore_ancs (TextPat _ _) (Element _ _ _) = False 
match_ignore_ancs (ElemPat _ _ _) (Text t) = False 
match_ignore_ancs (ElemPat _ c pats) (Element t avs xs) = 
    c t avs && match_pats pats xs 

任何想法这是什么意思,我怎么能解决它?

干杯。

+0

如果您将'match_ignore_ancs'中的'pats'重命名为其他内容,例如, G。 'pats1'? – 2010-05-25 08:05:21

回答

9

这意味着你必须定义别的地方在你的程序或从某个库模块导入的符号pats,并在相同的范围内match_ignore_ancs是可见的,所以当你命名参数pats,它隐藏(即“阴影” )现有的符号。

只需将pats参数重命名为没有碰撞的东西。