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 :

[Haskell] Raison d'être du monade IO?


Sujet :

Haskell

  1. #21
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Jedai
    Je n'appelle pas ça un problème "en pratique" si je n'ai aucune chance de tomber dessus en ayant une pratique normale du langage.
    Soit GHC fournit cette garantie, soit il ne la fournit pas. Si c'est la cas, je serai content de l'apprendre, mais dans le cas contraire, je ne vois pas ce qui t'autorise à dire que tu n'as « aucune chance de tomber dessus en ayant une pratique normale du langage. »

  2. #22
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Par pratique normale, il veut dire exécuter des choses raisonnables... Fais attention, car tu risques en plus de bourrer la mémoire avec ton calcul de factorielle, les entiers Haskell étant, par défaut, de précision arbitraire si je me souviens bien.

    Sinon, je suis d'accord, c'est ultra con de devoir activer toutes les optimisations à la main sous GHC ; OCaml est bien mieux dans ce sens, avec deux seules optimisations générales : -inline et -unsafe, plus une pour x86 et deux autres pour SPARC.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  3. #23
    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 InOCamlWeTrust
    Sinon, je suis d'accord, c'est ultra con de devoir activer toutes les optimisations à la main sous GHC ; OCaml est bien mieux dans ce sens, avec deux seules optimisations générales : -inline et -unsafe, plus une pour x86 et deux autres pour SPARC.
    Tu n'es pas obligé de les activer à la main : tu peux te contenter de demander un "pack" avec -O2 par exemple. Le problème évoqué par monstre n'existe que pour le cas -O0.

    Par pratique normale, il veut dire exécuter des choses raisonnables... Fais attention, car tu risques en plus de bourrer la mémoire avec ton calcul de factorielle, les entiers Haskell étant, par défaut, de précision arbitraire si je me souviens bien.
    Pratique normale : exécuter des choses raisonnables en mode interactif et sinon compiler avec au moins -O.
    Les entiers Haskell ne sont pas "par défaut" de complexité arbitraire, tout dépend de si on travaille avec Int ou Integer (si "par défaut" tu voulais dire qu'une fonction qui ne le spécifie pas se retrouve avec du Num a par défaut et finalement du Integer si nécessaire, tu as effectivement raison bien sûr).

    --
    Jedaï

  4. #24
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par Jedai
    (si "par défaut" tu voulais dire qu'une fonction qui ne le spécifie pas se retrouve avec du Num a par défaut et finalement du Integer si nécessaire, tu as effectivement raison bien sûr).
    Oui, c'est bien ça.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #25
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Si tu cherches un papier un peu "fondateur" sur les monades en Haskell :
    http://homepages.inf.ed.ac.uk/wadler...rf/baastad.pdf
    Je te le recommande.

    Après, il y a les articles antérieurs de Moggi, mais j'ai pas réussi à les lire pour l'instant.

  6. #26
    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
    Citation Envoyé par monstre
    Je ne doute pas de l'utilité de l'évaluation de l'évaluation paresseuse. Je dis seulement que :
    - elle complique l'analyse des programmes (cf. message précédent);[...]
    En fait en pratique c'est le contraire.
    L'analyse (je suppose que c'est plutôt le passage de l'analyse à la conception, voire la conception, que tu voulais dire) est simplifiée puisque tu écris comme tu le ferais en math. On calcule tout l'arbre! Peu de chance de le faire réellement, mais pourtant c'est ce que tu aimerais faire.
    Avec un programme « normal » tu as une disjonction importante entre ton analyse et ta conception. Avec l'évaluation paresseuse tu as moins ce problème. C'est pourquoi le concept existe plus ou moins partout. Mais Haskell le donne de base dans son paradigme. Après savoir s'il vaut mieux l'avoir par défaut et la supprimer ou ne pas l'avoir et le donner explicitement est un autre problème.

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Non, l'évaluation paresseuse complique effectivement beaucoup l'analyse des programmes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    len :: [a] -> Int -> Int
    len [] acc = acc
    len (x:xs) acc = len xs (1 + acc)
    C'est bien une définition tail-récursive de la taille d'une liste. Pourtant, elle a un coup linéaire en mémoire, tout comme la version non tail-récursive.
    Pourquoi ? À cause de l'évaluation paresseuse. Explication donnée ici.

    Cet exemple est très simple. Sur un gros programme, il devient extrêmement difficile de prévoir le comportement des langages paresseux. La communauté Haskell développe des outils pour étudier ces problèmes (je pense à Hat), mais ça ne permet pas encore de résoudre les problèmes à grande échelle. L'étude des performances des programmes paresseux reste très compliquée.

    L'évaluation paresseuse est très intéressante, mais elle vient aussi avec des désavantages qu'on ne peut pas ignorer.

  8. #28
    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
    Citation Envoyé par bluestorm
    Non, l'évaluation paresseuse complique effectivement beaucoup l'analyse des programmes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    len :: [a] -> Int -> Int
    len [] acc = acc
    len (x:xs) acc = len xs (1 + acc)
    [...]
    On ne parle pas de la même analyse.
    L'analyse est, en général dans le glossaire informatique, la phase préliminaire de compréhension du problème. Celle qui est situé avant la conception et donc bien avant l'implémentation. Je réitère donc: en pratique, l'évaluation paresseuse se rapproche des mathématiques (par la gestion de l'infini par exemple) et simplifie donc le passage analyse/conception. Sâchant qu'un très grand nombre d'erreurs surviennent à cette phase, et sont souvent fatales pour le projet, l'évaluation paresseuse peut être vu comme un plus.
    Tu parlais d'analyse de code une fois le programme effectué, non? Ce qui a ce moment à du sens.

  9. #29
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Garulfo
    Tu parlais d'analyse de code une fois le programme effectué, non? Ce qui a ce moment à du sens.
    Oui, c'est bien de cette analyse-là dont il est question.

  10. #30
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Jedai Voir le message
    ... je te conseille "Tackling the Awkward Squad", un excellent papier sur l'I/O, l'interfaçage avec le C, la programmation concurrente et les exceptions avec Haskell...
    Je n'arrive pas à y aller avec Firefox (y m'dit Service Unavailable l'machin ...), il m'a fallu ressortir IE pour accéder au site.

    Ca vous le fait aussi ?

  11. #31
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par barbouille Voir le message
    Ca vous le fait aussi ?
    Aucun problème avec Firefox 2.0.0.12 sous linux

  12. #32
    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 barbouille Voir le message
    Je n'arrive pas à y aller avec Firefox (y m'dit Service Unavailable l'machin ...), il m'a fallu ressortir IE pour accéder au site.

    Ca vous le fait aussi ?
    J'y accède sans problème avec Konqueror, peut-être as-tu simplement eu la malchance de tomber sur un moment où le serveur était indisponible.

    --
    Jedaï

  13. #33
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Jedai Voir le message
    J'y accède sans problème avec Konqueror, peut-être as-tu simplement eu la malchance de tomber sur un moment où le serveur était indisponible.
    Ben non, j'avais les 2 navigateurs en parallèle (Firefox et IE). Je suis sous windows XP.

    Mais bon, c'est pô grave, c'était juste une constatation en passant. Je considère ça comme une mystère mystérieux de plus

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. graphe effacé peut-être sans raison
    Par AlfredKr dans le forum Débuter
    Réponses: 2
    Dernier message: 29/10/2014, 08h52
  2. Réponses: 9
    Dernier message: 12/10/2011, 14h27
  3. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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