2010-05-25 18 views
9

Dostaję ostrzeżenie od GHC kiedy mogę skompilować:Co oznacza w Haskell, czy powiązanie "zacienia istniejące powiązanie"?

Warning: Wiązanie dla cieni „klepie” istniejący obowiązujących w definicji „match_ignore_ancs”

Oto funkcja:

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 

Każdy pomysł, co to oznacza i jak mogę to naprawić?

Pozdrawiam.

+0

Co by się stało, gdyby zmienić nazwę obu "patów" w 'match_ignore_ancs' na coś innego, np. sol. 'pats1'? –

Odpowiedz

9

Oznacza to, że masz symbol pats zdefiniowane gdzie indziej w programie lub importowane z jakiegoś modułu biblioteki, i to jest widoczne w tym samym zakresie jak match_ignore_ancs, więc jeśli nazwa parametru pats, ukrywa (Ie „cienie”) ten istniejący symbol.

Wystarczy zmienić nazwę parametru pats na coś, co nie powoduje kolizji.

Powiązane problemy