• [^] # Re: Méconnaissance

    Posté par (site web personnel) . En réponse au journal Compilateur et Monad Reader. Évalué à 2.

    Désolé j'ai oublié cette partie

    Pour le coup je ne comprend pas à quoi les lens peuvent servir. Je n'ai jamais vraiment touché aux lens, mais ce n'est pas plus dans l'idée de modifier une structure compliquée en appliquant des modificateurs/lecteurs aux différentes parties ? Si tu pouvais éclaircir ce point j'en serais ravi.

    Les lens permettent, lorsqu'on travaille avec des niveaux d'organisation imbriqués de réduire la dépendance entre les modules. Par exemple si on écrivait

    x.A.y.B.z.C.t

    on a une dépendance des modules, car A connaît à la fois B et C et B connaît C. Si on a des empilements plus grands, la chaîne de dépendance à un nombre quadratique en le nombre de modules qui apparaissent – parceque 1 + 2 + ... + n ~ 1/2 n2 pour n grand. Si on utilise de lens on peut faire en sorte que chaque module ne connaisse que ses voisins, on a fortement réduit le couplage de notre programme car la taille des la chaîne de dépendances passe de quadratique à linéaire. Cela signifie que le coût des modifications devient linéaire au lieu de quadratique (imaginions qu'on change la définition du type de C.t par exemple) ce qui est bien.

    Pour la monade Reader on peut utiliser les lens pour composer un environnement de plus en plus riche, au lieu d'empiler des monades liées à différents environnements.