• [^] # Re: euh?!

    Posté par . En réponse au journal Retour d'expérience avec le langage J. Évalué à 5.

    Il ne s'agit pas vraiment de composition de fonction mais d'adopter un style pointless, c'est un peu plus fort.

    Franchement, cela rajoute quoi comme sémantique ? C'est exactement la même chose.

    Là oui, mais pour cet exemple :

    f x = let g = map (+1) x
     in g
    f' = let g = map (+1)
     in g

    Certes, la sémantique est la même concernant les données, mais pas l'implémentation. La première implémentation f est bien plus lente que la seconde f'. Dans f le compilateur voit que la valeur de g dépend de x, et donc va créer la fermeture à l’exécution (à chaque appel). Dans f', on donne la "vrai" définition de f', c'est "la fonction qui prend une liste d'entiers et retourne la liste où chaque entier est incrémenté". Un compilateur malin va pouvoir "inliner" le (+1) dans le map et compiler du code optimal (dans ce cas simple).

    Please do not feed the trolls