Haskell 中的通配符匹配模式

Wild card matching pattern in Haskell

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

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

Haskell 中的等价物是什么?

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

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

现在,每当模式 (True, False) 传递给 imply 时,它将 return False,在所有其他情况下它将 return 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