【问题标题】:Wild card matching pattern in HaskellHaskell 中的通配符匹配模式
【发布时间】:2015-03-04 12:32:20
【问题描述】:

OCaml 在所有其他情况都失败时提供通配符匹配模式:

let imply v = match v with 
         (true,false) -> false
       |   _          -> true;;

Haskell 中的等价物是什么?

【问题讨论】:

  • 确实如此。你做错了什么。请提供实际代码,然后我们实际上可能会对您做错的事情说一些有用的东西。如果你在 haskell 中匹配 (true,false) 你必须意识到 that 不起作用,因为 true 和 false 是变量名,而不是 haskell 中的文字。

标签: haskell pattern-matching


【解决方案1】:

最好把函数定义分开,像这样

imply :: (Bool, Bool) -> Bool
imply (True, False) = False
imply _ = True

现在,只要将模式 (True, False) 传递给 imply,它将返回 False,在所有其他情况下,它将返回 True

此外,您实际上所做的一切都很好,如果您在交互式 shell 中定义它,最好注意缩进错误。

Prelude> :{
Prelude| let imply v = case v of
Prelude|              (True, False) -> False
Prelude|              _ -> True
Prelude| :}
Prelude> imply (False, True)
True
Prelude> imply (True, False)
False
Prelude> imply (True, True)
True
Prelude> imply (False, False)
True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2021-05-22
    • 2019-03-19
    相关资源
    最近更新 更多