2 votes

Haskell : Confusion sur 'foldl' avec l'opérateur entre parenthèses (==)

Voici quelques résultats de l'application de 'foldl' à cet opérateur d'égalité particulier. Je ne les comprends pas - je pensais que chaque ligne devait retourner vrai, puisque "False == False == False ..." est vrai quelle que soit la longueur de la liste. Je suis assez novice en Haskell.

Prelude> foldl (==) False [False]
True
Prelude> foldl (==) False [False,False,False]
True
Prelude> foldl (==) False [False,False,False,False]
False
Prelude> foldl (==) False [False,False,False,False,False]
True
Prelude> foldl (==) False [False,False,False,False,False,False]
False

J'ai trouvé ces résultats en essayant d'écrire une fonction qui teste si une liste de fonctions donne le même résultat lorsqu'elle est appliquée à un argument commun (renvoyant un booléen).

4voto

Daniel Philpott Points 51

\== est un opérateur binaire. Lorsque vous écrivez Faux == Faux == Faux, vous écrivez en réalité (Faux == Faux) == Faux, qui est Vrai == Faux. Peut-être pouvez-vous maintenant comprendre ce qui se passe.

Réponse envoyée dans les commentaires par 'Alexis King'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X