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.
[^] # Re: Méconnaissance
Posté par Michaël (site web personnel) . En réponse au journal Compilateur et Monad Reader. Évalué à 2.
Désolé j'ai oublié cette partie
Les
lenspermettent, lorsqu'on travaille avec des niveaux d'organisation imbriqués de réduire la dépendance entre les modules. Par exemple si on écrivaiton a une dépendance des modules, car
Aconnaît à la foisBetCetBconnaîtC. 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 delenson 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 deC.tpar exemple) ce qui est bien.Pour la monade
Readeron peut utiliser leslenspour composer un environnement de plus en plus riche, au lieu d'empiler des monades liées à différents environnements.