• [^] # Re: Dernier cas

    Posté par (site web personnel) . En réponse au journal Haskell -- Évaluation paresseuse. Évalué à 2.

    Oui, l’implémentation doit être faite avec attention pour ne pas boucler.

    let g s l = ((map (/s) l),sum l)

    Je n'arrive pas à reproduire ta boucle en copiant ton implémentation de g. Es-tu certain que c'est bien celle que tu utilises ?

    Voici mon implémentation de g :

    g s (x:[]) = ([x / s], x) -- cas 0
    g s (x:xs) = let (res, s') = g s xs -- cas 1
     in ((x / s) : res, s' + x)

    Ici, dans le cas 0, je traite la liste d'un seul élément. Le résultat c'est [x / s] et la somme pour un unique élément c'est x.

    Dans le cas 1, je traite la liste de plus d'un élément. Je réalise d'abord un appel récursif g s xs pour récupérer le résultat res sur la sous liste et la somme s' sur la sous liste. Puis je renvois le résultat courant (x / s) : res) et la somme mise à jours s' + x.