IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Haskell Discussion :

[moment de détente] L'évolution du programmeur Haskell


Sujet :

Haskell

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut [moment de détente] L'évolution du programmeur Haskell
    Pour ceux qui ne connaissent pas:
    http://www.willamette.edu/~fruehr/ha...evolution.html

    Voilà !

  2. #2
    Membre du Club Avatar de limestrael
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 86
    Points : 57
    Points
    57
    Par défaut
    Oui, bon, faire péter les functors pour calculer une factorielle, faut pas déconner non plus.

    J'ai été déçu par moi-même quand j'ai réalisé que je l'aurais codé
    fac 0 = 1
    fac n = n*fac (n-1)

    Au lieu du superbe (et pointless) :
    fac = foldr (*) . enumFromTo 1

    J'ai pas encore tout à fait le réflexe fold, je crois, snif.

  3. #3
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par limestrael Voir le message
    Oui, bon, faire péter les functors pour calculer une factorielle, faut pas déconner non plus.

    J'ai été déçu par moi-même quand j'ai réalisé que je l'aurais codé
    fac 0 = 1
    fac n = n*fac (n-1)

    Au lieu du superbe (et pointless) :
    fac = foldr (*) . enumFromTo 1

    J'ai pas encore tout à fait le réflexe fold, je crois, snif.
    Prends le reflexe surtout

    Bon et puis euh, reste quand même de loin la meilleure méthode

  4. #4
    alex_pi
    Invité(e)
    Par défaut
    Bon ok, product c'est pas si bien, parce que c'est lazy. Il vaut mieux foldl1' (*) [1..n]

  5. #5
    Membre du Club Avatar de limestrael
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 86
    Points : 57
    Points
    57
    Par défaut
    J'en ai trouvé une autre sur le net qui n'est pas recensée ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fac n = (foldr (.) id [(*k) | k <- [1..n]]) 1

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    Bon ok, product c'est pas si bien, parce que c'est lazy. Il vaut mieux foldl1' (*) [1..n]
    Ouais, c'est une connerie dans le Report à mon avis, product et sum utilisent foldl1... Si on voulait vraiment qu'ils soient paresseux on aurait dû utiliser foldr1, et si on voulait qu'ils soient efficaces dans tous les cas courants, on aurait dû employer foldl1'.

    Enfin au moins GHC peut déduire qu'ils sont stricts et les optimise (si -O2 est activé) en version stricte compilée.

    --
    Jedaï

Discussions similaires

  1. Réponses: 15
    Dernier message: 10/10/2002, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo