Что в Haskell означает, что привязка «затеняет существующую привязку»? - PullRequest
9 голосов
/ 25 мая 2010

При компиляции я получаю предупреждение от 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

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

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

1 Ответ

9 голосов
/ 25 мая 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...