Haskell,堆栈构建工具。
我有代码:
quote :: Char
quote = '\''
doubleQuote :: Char
doubleQuote = '\"'
isBorder :: Char -> Bool
isBorder quote = True
isBorder doubleQuote = True
isBorder _ = False
它将被编译而没有错误,但我在编译过程中看到消息:
D:\haskell\real\app\Main.hs:34:1: 警告:[-Woverlapping-patterns]
模式匹配是多余的
在 `isBorder' 的等式中: isBorder 双引号 = ...
D:\haskell\real\app\Main.hs:35:1:警告:[-Woverlapping-patterns]
模式匹配是多余的
在 `isBorder' 的等式中: isBorder _ = ...
这是什么意思?我没看到裁员...
声明函数时,参数变量是new名称。您的 quote 和 doubleQuote 正在隐藏函数,而不是调用函数进行模式匹配。这样,模式匹配的语言就微妙地偏离了右手表达式的语言。为了实现你想要的,要么
isBorder :: Char -> Bool
isBorder '\'' = True
isBorder '\"' = True
isBorder _ = False
or
isBorder :: Char -> Bool
isBorder c | quote == c = True
isBorder c | doubleQuote == c = True
isBorder _ = False
其哲学是首先将论证与名称绑定起来then使用防护来调用计算结果为布尔值的表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)