2010-05-25 51 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參數重命名爲沒有碰撞的東西。