在 Haskell 中,如果绑定“隐藏现有绑定”,这意味着什么?
当我编译时,我收到来自 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
知道这意味着什么以及如何修复它吗?
干杯。
I'm getting a warning from GHC when I compile:
Warning: This binding for 'pats' shadows an existing binding in the definition of 'match_ignore_ancs'
Here's the function:
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
Any idea what this means and how I can fix it?
Cheers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这意味着您在程序中的其他位置定义了一个符号
pats
或从某个库模块导入,并且它在与match_ignore_ancs
相同的范围内可见,因此当您命名一个参数pats
,它隐藏(即“阴影”)现有符号。只需将
pats
参数重命名为不会发生冲突的名称即可。It means that you have a symbol
pats
defined somewhere else in your program or imported from some library module, and it's visible in the same scope asmatch_ignore_ancs
, so when you name a parameterpats
, it hides (i.e. "shadows") that existing symbol.Just rename the
pats
parameter to something that doesn't have a collision.