Est l'opérateur && stricte en Haskell?

Par exemple, j'ai une opération fnB :: a -> Bool qui n'a pas de sens jusqu'à ce que fnA :: Bool retourne False. En C je peut composer ces deux opérations en une if bloc:

if( fnA && fnB(a) ){ doSomething; }

et C permettra de garantir que fnB ne va pas s'exécuter jusqu'à ce que fnA renvoie la valeur false.

Mais Haskell est paresseux, et, généralement, il n'y a aucune garantie que le fonctionnement soit exécuté en premier, jusqu'à ce que nous n'utilisons pas de seq, $!, ou quelque chose d'autre à faire de notre code strict. Généralement, c'est ce dont nous avons besoin pour être heureux. Mais à l'aide de && opérateur, je m'attends à ce que fnB ne sera pas évalué jusqu'à fnA retourne son résultat. Ne Haskell offrir une telle garantie avec &&? Et Haskell évaluer fnB même lorsque fnA renvoie False?