Haskell : comprendre “Aucune instance pour” messages d'erreur dans ghci

Question 1

Salut, si dans WinGHCi j'ai volontairement effectuer les opérations suivantes mauvais morceau de code :

3 4

Puis le message d'erreur que j'obtiens est

<interactive>:1:1:
    No instance for (Num (a0 -> t0))
      arising from the literal `3'
    Possible fix: add an instance declaration for (Num (a0 -> t0))
    In the expression: 3
    In the expression: 3 4
    In an equation for `it': it = 3 4

Quoi exactement No instance for (Num (a0 -> t0)) veux dire?

Question 2

Pourquoi le morceau de code suivant :

(+) 2 3 4
<interactive>:1:7:
    No instance for (Num (a0 -> t0))
      arising from the literal `3'
    Possible fix: add an instance declaration for (Num (a0 -> t0))
    In the second argument of `(+)', namely `3'
    In the expression: (+) 2 3 4
    In an equation for `it': it = (+) 2 3 4

rendement est légèrement différent de l'erreur à partir de la deuxième partie du code :

2+3 4
<interactive>:1:3:
    No instance for (Num (a1 -> a0))
      arising from the literal `3'
    Possible fix: add an instance declaration for (Num (a1 -> a0))
    In the expression: 3
    In the second argument of `(+)', namely `3 4'
    In the expression: 2 + 3 4

À savoir dans le premier morceau de code que nous avons No instance for (Num (a0 -> t0)) où, comme dans le deuxième morceau de code que nous avons No instance for (Num (a1 -> a0)).


[Réponse à ehird]

(Questions déplacé de répondre à des commentaires) :

1) j'apprécie les deux dernières expressions sont différentes, mais dites-vous que je ne devrais pas essayer de comprendre pourquoi l'interprète choisit (Num (a0 -> t0)) pour l'ancien et (Num(a1 -> a0)) pour ce dernier, outre le fait qu'ils sont différents?

2)Salut, et avec l'ancien quand vous dites "Mais il n'y a pas de Num exemple pour les fonctions" que voulez-vous dire? Désolé, je ne suis pas clair sur ce que le concept d'une instance est. En outre, juste par curiosité, pourriez-vous utiliser votre instance Num (a -> b) méthode de quelque sorte de dire à l'interprète 3 4 comme 4 modulo 3?

OriginalL'auteur artella | 2012-04-29