10

コンパイルすると、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

これが何を意味するのか、どうすれば修正できるのか、何か考えはありますか?

乾杯。

4

1 に答える 1

11

これはpats、プログラム内の別の場所で定義されたシンボル、またはライブラリモジュールからインポートされたシンボルがあり、と同じスコープで表示されることを意味しますmatch_ignore_ancs。したがって、パラメーターpatsに名前を付けると、既存のシンボルが非表示になります(つまり「シャドウ」)。

patsパラメータの名前を、衝突のない名前に変更するだけです。

于 2010-05-25T09:32:29.030 に答える