Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Profil pro Arnaud
    Inscrit en
    janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Arnaud

    Informations forums :
    Inscription : janvier 2011
    Messages : 4
    Points : 2
    Points
    2

    Par défaut Problème de type

    Bonjour,

    sans doute trivial comme question mais bon... Quand on débute, on débute :p
    Voici le problème:

    data A = I Int
    | S [A]
    deriving(show,Eq)

    je fais un:
    let t = S [I 1,I 2,I 3]
    mais quand je fais un:
    sum t
    Ghci me renvoi une erreur.

    Si quelqu'un avait une piste pour pouvoir additionner les entiers définis dans t, je lui serai éternellement reconnaissant

    Merci d'avance!

  2. #2
    Membre confirmé
    Avatar de Chatanga
    Inscrit en
    décembre 2005
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 184
    Points : 261
    Points
    261

    Par défaut

    La fonction sum est du type :

    Code :
    sum :: (Num a) => [a] -> a
    Or tu ne lui fournis pas un tableau de nombres, mais une sorte d'arbre (quand bien même il n'aurait qu'une profondeur de 1). En utilisant cette version alternative, ça fonctionnera :

    Code :
    1
    2
    3
    sum' :: A -> Int
    sum' (S elements) = sum (map sum' elements)
    sum' (I n) = n

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •