小编Max*_*x K的帖子

Haskell中case语句中的模式匹配变量

如果我使用case语句将字符串文字与字符串文字进行比较,我会得到预期的行为:如果它们是相同的 - 它匹配,如果它们不匹配 - 它不匹配.

但是,如果我将字符串文字与作为字符串的常量进行比较,则会得到"模式匹配重叠"警告,并且具有常量的分支始终匹配.

这是一个示例会话:

Prelude> let var1 = "abc"
Prelude> let var2 = "def"
Prelude> case var1 of { var2 -> "Fail"; _ -> "Win" }

<interactive>:1:0:
    Warning: Pattern match(es) are overlapped
             In a case alternative: _ -> ...
"Fail"
Prelude> case "abc" of { var2 -> "Fail"; _ -> "Win" }

<interactive>:1:0:
    Warning: Pattern match(es) are overlapped
             In a case alternative: _ -> ...
"Fail"
Prelude> case "abc" of { "def" -> "Fail"; _ -> "Win" …
Run Code Online (Sandbox Code Playgroud)

string comparison haskell case-statement

11
推荐指数
3
解决办法
6340
查看次数

标签 统计

case-statement ×1

comparison ×1

haskell ×1

string ×1