J'ai toujours du mal à me faire face à la différence entre le == code> et
= code> dans haskell. Je sais que le premier a quelque chose à voir avec un type surchargé et celui-ci "donne le résultat" de la fonction mais je ne peux tout simplement pas sembler avoir la tête qui l'entoure! Toute aide serait très appréciée. P>
5 Réponses :
== est pour l'égalité p>
Exemple: comparer deux entiers p>
= est l'affectation p>
exemple: attribution d'un entier à une variable p>
J'utiliserais le mot "définition" sur "assignation". x = 4 code> signifie "x est défini à 4". Cela compte parce que l'affectation implique que cela compte quand i> cela se produit, ce qu'il ne le fait pas.
Je ne suis pas tout à fait un expert de Haskell, mais comme dans la plupart des autres langues == code> est un opérateur de comparaison produisant
true code> ou
false code> , tandis que
= code> est l'opérateur d'affectation, lequel dans HASKELL résume la déclaration de fonction.
ghci> 5 == 5
true
ghci> "foo" == "bar"
false
ghci> let foo = "bar"
pour Exemple: P> Notez que j'ai utilisé une manière pithy de penser à la différence est que = code> est un symbole spécial réservé à Haskell Signification "est défini comme". Il est utilisé pour introduire des définitions. C'est-à-dire que vous l'utilisez pour créer de nouvelles valeurs et fonctions qui peuvent être référencées dans les définitions d'autres valeurs et fonctions.
== code> n'est pas un symbole réservé mais juste une course de la -Mill fonction de type
EQ A => A -> A -> bool code>. Il se trouve être déclarée dans un classe de type (
EQ code>) , mais il n'y a rien d'extraordinaire à ce sujet. Vous pouvez masquer la déclaration intégrée de
== code> et le redéfinir sur ce que vous vouliez. Mais normalement cela signifie "est égal à", et parce que cela fait partie d'une classe de type, vous pouvez définir (surcharger) cela signifie que ce que vous voulez "égalité" signifie pour votre type particulier. P>
= code> pour définir
== code> pour
foo code>! p>
= code> affirme em> égalité au moment de la compilation, tandis que
== code> Vérifie l'égalité em> à l'exécution. p> p>
Le == est un opérateur de comparaison si deux choses sont égales. C'est une fonction de haskell assez normale avec le type "EQ A => A -> A -> Bool". Le type indique qu'il fonctionne sur chaque type de valeur qui implémente la typlass EQ, de sorte qu'il est en quelque sorte surchargé. P>
Le = D'autre part est un opérateur d'affectation, utilisé pour introduire des définitions. p>
= code> exécute l'affectation. ou la définition est probablement un mot meilleur. ne peut que le faire une fois. Ceci est un opérateur / symbole spécial. Ce n'est pas une fonction
== code> est une fonction, généralement infixée, qui prend deux entrées de type CODE CODE> EQ code> et renvoie un BOOL P>
Prelude> let a = 1
Prelude> a
1
Prelude> 5 == 5
True
Prelude> 5 == 6
False
Prelude> :t (==)
(==) :: (Eq a) => a -> a -> Bool
Notez que de nombreuses langues, pas seulement Haskell, ont des définitions légèrement variables pour ces opérateurs. Erlang, notamment, utilise
= code> dans des endroits où la plupart des autres langues utiliseraient
== code>