• [^] # Re: Programmation impérative...

    Posté par . En réponse au journal Psychology of programming. Évalué à 5.

    Je pense qu'on peut faire mieux cela dit...

    main = interact (show . maximum . takeWhile (/= -99) . inputs)
    On remarque qu'il n'y a plus de variable et plus de récursion. Je suis un peu habitué à ce style déclaratif, mais je pense ne pas m'avancer trop si je dis que ça se lit presque naturellement :
    Il s'agit d'un programme interactif qui affiche la valeur maximale parmi une série (terminée par la valeur spéciale -99) qui a été entrée par l'utilisateur.

    Maintenant, je ne pense pas pour autant que ce code soit facile à comprendre / implémenter pour un débutant (je ne pense pas que Haskell soit très adapté comme premier langage), mais on remarque quand même qu'on y gagne à utiliser des fonctions sémantiques (comme "max") vis à vis de l'exemple initial.

    Accessoirement, en tant qu'étudiant, je trouve ça totalement idiot de faire comprendre des programmes dont l'explication est aussi tortueuse. On devrait pouvoir trouver des exemples qui parlent plus à l'instinct, pour familiariser avec les concepts (quelque chose où le résultat semble plus utile pour un nouveau, qu'il puisse se rattacher à sa compréhension naturelle pour intégrer ce qui se passe vraiment.)

    (header nécessaire au bon fonctionnement du code précédent :)

    module Simple where
    import Data.List
    import Data.Maybe

    inputs :: String -> [Int]
    inputs = unfoldr (listToMaybe . reads)