我目前正在学习Haskell,学习的主题是模式匹配。在Haskell中,_ && _ = False
是什么意思?我在一张讲义幻灯片中看到了这个语句,不知道下划线代表什么?谢谢!
我目前正在学习Haskell,学习的主题是模式匹配。在Haskell中,_ && _ = False
是什么意思?我在一张讲义幻灯片中看到了这个语句,不知道下划线代表什么?谢谢!
下划线是通配符。也就是说,它们可以匹配任何值,但不会将该值绑定到名称上。这种用法的一个常见例子是:
True && True = True
_ && _ = False
下划线代表一个通配符,可以绑定任何值。这意味着对于给定函数类型的左右操作数的任何值,它都将触发该条款,从而返回False
。
因此,可以使用以下方式定义(&&) :: Bool -> Bool -> Bool
:
(&&) :: Bool -> Bool -> Bool
True && True = True
_ && _ = False
< p > (&&)
的实际实现在其第二个参数上是惰性的,并且实现为如下[src]:
-- | Boolean \"and\" (&&) :: Bool -> Bool -> Bool True && x = x False && _ = False
True && False
,它将从上到下评估子句。第一个子句不匹配(因为有两个“True”),因此它查找下一个子句,并且该模式将“触发”,因此它将返回False
。 - Willem Van Onsem(&&)
的类型表明它的参数不是列表,所以你永远不会尝试将列表与模式 _
匹配。 - Daniel Wagner