j'ai écrit le code suivant dans Haskell pour calculer le produit scalaire de deux vecteurs, mais ne peut pas le compiler en raison de l'erreur suivante:Pourquoi Haskell lance-t-il une erreur «impossible de construire un type infini»?
cannot construct infinite type: a = [a] When generalising the type(s) for dot'
dot :: (Num a) => [a] -> [a] -> a
[] `dot` [] = 0
[email protected][xi,xs] `dot` [email protected][yi,ys] = xi*yi + (xs `dot` ys)
J'ai pris un coup d'œil à this question à l'avance à titre indicatif. Autant que je sache, les types sont corrects. x, y et les deux [] sont des listes, et la fonction renvoie un nombre.
Qu'est-ce qui ne va pas?
C'est l'équivalent de Haskell de référence d'objet non défini ou de débordement de pile, vous allez le voir beaucoup;) –