例如,我有一个在返回fnB :: a -> Bool之前没有意义的操作。在 CI 中可以将这两个操作组合在一个块中:fnA :: BoolFalseif
if( fnA && fnB(a) ){ doSomething; }
并且 C 将保证在返回 falsefnB之前不会执行。fnA
但是 Haskell 是懒惰的,而且通常不能保证首先执行什么操作,除非我们不使用seq,$!或其他东西来使我们的代码严格。一般来说,这就是我们需要快乐的东西。但是使用&&运算符,我希望在返回结果fnB之前不会对其进行评估。fnAHaskell 是否提供这样的保证&&?fnB即使fnA返回 False ,Haskell 也会进行评估吗?