最近一直困扰我的一个快速问题。 Haskell 是否在返回布尔值的函数中执行所有等价测试,即使返回一个假值?
例如
f a b = ((a+b) == 2) && ((a*b) == 2)
如果第一个测试返回 false,是否会执行第二个测试&&
?或者 Haskell 是否足够懒,不做并继续前进?
应该像其他语言一样短路。在 Prelude 中是这样定义的:
(&&) :: Bool -> Bool -> Bool
True && x = x
False && _ = False
因此,如果第一个参数为 False,则无需评估第二个参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)