たとえば、fnB :: a -> Boolreturn まで意味のない操作がありfnA :: BoolますFalse。CI では、次の 2 つの操作を 1 つのifブロックにまとめることができます。
if( fnA && fnB(a) ){ doSomething; }
Cは false を返すfnBまで実行しないことを保証します。fnA
seqしかし、Haskell は怠け者であり、通常、コードを厳密にするために 、$!、またはその他の何かを使用しない限り、どの操作が最初に実行されるかは保証されません。一般的に、これは私たちが幸せになるために必要なものです。しかし、演算子を使用すると、結果が返されるまで評価されないこと&&が予想されます。Haskell は でそのような保証を提供しますか? また、Haskellは Falseを返しても評価しますか?fnBfnA&&fnBfnA