• [^] # Re: goto

    Posté par . En réponse au journal <3 goto. Évalué à 4.

    À ma connaissance seul python a cette règle.

    Haskell aussi, mais on peut toujours expliciter les blocs :

    -- ce programme affiche 10 fois coucou
    main = do sequence_ $ replicate 10 $ do return ()
     putStrLn "coucou !"
    --celui la n'affiche qu'une fois coucou
    main' = do sequence_ $ replicate 10 $ do return ()
     putStrLn "coucou !"
    -- celui ci ne compile pas (c'est la colonne du premier caractère après le do qui compte)
    main'' = do sequence_ $ replicate 10 $ do return ()
     putStrLn "coucou !"
    -- celui là fait ce qu'il a l'air de faire 
    main''' = do sequence_ $ replicate 10 $ do { return ()
     ; putStrLn "coucou !"
     }

    La sémantique sans blocs explicite est donnée par la colonne du premier caractère suivant le mot clef. Effectivement, à cause de ça on peut pas écrire du code « au kilomètre » et laisser la machine indenter, elle peut pas le faire correctement. En toutes franchise, je trouve ça bien dans l'idée, par contre en pratique c'est chiant, par exemple quand on change le nom d'une fonction (sans outil adapté) on pète tout le code.
    Par contre, ya pas le cirque de python pour les espaces et les tabulations.

    Please do not feed the trolls