2010-05-25 5 views
9

ich eine Warnung von GHC bekommen, wenn ich kompilieren:Was bedeutet es in Haskell, wenn eine Bindung "eine bestehende Bindung überschattet"?

Achtung: ‚match_ignore_ancs‘ eine bestehende Bindung in der Definition von Schatten für ‚Streicheleinheiten‘ Bindung ist

Hier kann die Funktion:

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 

Irgendeine Idee, was das bedeutet und wie ich es beheben kann?

Prost.

+0

Was würde passieren, wenn Sie beide 'pats' in' match_ignore_ancs' in etwas anderes umbenennen, z. G. 'Klaps1'? –

Antwort

9

Es bedeutet, dass Sie ein Symbol pats definierte woanders in Ihrem Programm haben oder aus einem Bibliotheksmodul importiert, und es ist sichtbar im gleichen Umfang wie match_ignore_ancs, also wenn Sie einen Parameternamen pats, es versteckt (dh „Schatten“) das vorhandene Symbol.

Benennen Sie einfach den pats Parameter in etwas um, das keine Kollision hat.

Verwandte Themen