• [^] # Re: cat troll.hs

    Posté par . En réponse à la dépêche Sortie du Glorious Haskell Compiler 7.8. Évalué à 6.

    Si le langage était vraiment pur, tu n’aurais ni affichage pour voir le résultat, ni rien du tout, le simple fait d’exécuter du code sur un ordinateur a un effet (par exemple en cherchant à allouer une grande quantité de mémoire dans un système plus ou moins chargé).

    En Haskell, le code est par défaut pur, et le code impur est très visiblement marqué comme tel. Dans ton exemple, foo est de type Num a => a -> IO a. On travaille donc dans la monade IO, qui a été spécialement conçu pour gérer les effets de bords. Mais il est vrai que la formulation de la dépêche est quelque peu obscure. L’équivalent Haskell d’une entrée comme input en Python est forcément impur.

    D’un point de vue moins pragmatique, tu te trompes. Ta fonction foo n’a pas renvoyé un résultat différent à chaque fois. Elle a toujours renvoyé une Num a => IO a. Le fait qu’a un moment donné quelque chose (une valeur numérique, probablement un Int) ait été généré à partir de cette IO n’affecte pas la pureté de foo.