当其他所有案例都失败时,OCaml会提供通配符匹配模式:
let imply v = match v with
(true,false) -> false
| _ -> true;;
Haskell中的等价性是什么?
答案 0 :(得分:4)
更好地分离函数定义,如此
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