Je ne peux pas vraiment l'obtenir. Pourquoi avons-nous besoin du tout? Je veux dire que si j'utilise le même paramètre de type, je pense que cela signifie qu'ils devraient être du même type. J'ai entendu dire que cela peut aider le compilateur à éviter la boucle infinie. Quelqu'un peut-il me dire plus de détails à ce sujet? En fin de compte, y a-t-il des «modèles et pratiques» à suivre sur l'utilisation de la dépendance fonctionnelle dans Real World Haskell?Dépendance fonctionnelle dans Haskell
[Suivi Question]
class Extract container element where
extract :: container -> element
instance Extract (a,b) a where
extract (x,_) = x
Dans le code ci-dessus, j'ai utilisé la même variable de type « a » pour les deux récipient et l'élément, je pense que le compilateur peut donc en déduire que ces deux types sont du même type.
Mais quand j'ai essayé ce code dans GHCi, j'ai obtenu les commentaires suivants:
*Main> extract('x',3)
<interactive>:1:0:
No instance for (Extract (Char, t) element)
arising from a use of `extract' at <interactive>:1:0-13
Possible fix:
add an instance declaration for (Extract (Char, t) element)
In the expression: extract ('x', 3)
In the definition of `it': it = extract ('x', 3)
Lorsque l'un d'entre eux a été spécifié comme type « char », pourquoi l'autre est encore de type non résolues « élément '?
est-ce que http://www.haskell.org/haskellwiki/Functional_dependencies aide? – lijie