• # Programmation impérative...

    Posté par (site web personnel) . En réponse au journal Psychology of programming. Évalué à 3.

    x := 0
    input n
    while n is not equal to -99 {
     if n > x then x := n
     input n
    }
    output x
    
    C'est sûr que présenter un langage très peu déclaratif avec en plus 2 façons d'assigner des valeurs (x := 0 et input n), ça peut ne pas être forcément évident pour les débutants. Il faudrait comparer avec d'autres paradigmes. Par exemple en fonctionnel :
    loop x = do
     n <- input
     test n x
     where
     test (-99) x = return x
     test n x = loop (max n x)
    main = do
     a <- loop 0 
     output a
    
    Pour quelqu'un qui n'a jamais programmé mais qui a quelques notions de math (variables non ré-assignables, fonctions pures), ça peut être plus compréhensible. Pour ceux que ça intéresse, il faut ajouter ce qui suit en haut du fichier pour le compiler avec ghc :
    module Main (main) where
    import Monad
    input = (liftM read) getLine :: IO Int
    output = putStrLn . show