2010-05-25 13 views
9

que estoy recibiendo una advertencia de GHC cuando compilo:En Haskell, ¿qué significa si un enlace "sombrea un enlace existente"?

Advertencia: Esta unión para las sombras 'Pats una consolidación actualmente en la definición de 'match_ignore_ancs'

Aquí está la función:

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 

¿Alguna idea de lo que significa esto y cómo puedo solucionarlo?

Saludos.

+0

¿Qué pasaría si cambia el nombre de ambos 'pats' en' match_ignore_ancs' a otra cosa, e. gramo. 'pats1'? –

Respuesta

9

Esto significa que usted tiene un símbolo pats definido en otra parte de su programa o importado de algún módulo de la biblioteca, y es visible en el mismo alcance que match_ignore_ancs, por lo que al dar nombre a un parámetro pats, se esconde (es decir, "sombras") ese símbolo existente.

Simplemente cambie el nombre del parámetro pats a algo que no tenga una colisión.

Cuestiones relacionadas