最近困扰我已久的一个问题:Haskell在返回布尔值的函数中,是否会执行所有等价测试,即使其中一个返回false的值?例如:
f a b = ((a+b) == 2) && ((a*b) == 2)
如果第一个测试返回false,Haskell会在&&
之后执行第二个测试吗?还是Haskell懒惰到不执行它而继续前进?
False && (length [1..]) < 0
因此,请在右侧抛出永远无法完成的内容。 - Caleb