Вопрос по haskell, ghc, compiler-warnings – Что в Haskell означает, что привязка «затеняет существующую привязку»?

9

Я получаю предупреждение от GHC при компиляции:

Предупреждение: эта привязка для 'pats' затеняет существующую привязку в определении '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

Любая идея, что это значит и как я могу это исправить?

Приветствия.

Что произойдет, если вы переименуете обаpats вmatch_ignore_ancs к чему-то другому, е. г.pats1 ? Yasir Arsanukaev

Ваш Ответ

1   ответ
9

Это означает, что у вас есть символpats определяется где-то еще в вашей программе или импортируется из какого-либо библиотечного модуля, и он виден в той же области видимости, что иmatch_ignore_ancsпоэтому, когда вы называете параметрpatsон скрывает (то есть "тени") этот существующий символ.

Просто переименуйтеpats параметр для чего-то, что не имеет столкновения.

Похожие вопросы