Il existe des classes Keyed
et FunctorWithIndexed
dans keys
et des bibliothèques de lentilles respectivement.La relation entre Data.Key et Control.Lens.Indexed
Leurs fonctions membres mapWithKey
et imap
semble être similaire, sauf que keys
est formulée à l'aide des familles de type et lens
utilise des dépendances fonctionnelles.
Quand faut-il préférer l'un ou l'autre? Pourquoi lens
n'utilise pas keys
, est-ce à cause de l'inférence de type? Y a-t-il un historique intéressant de développement? En tant que rédacteur de bibliothèque, devrais-je écrire des variantes pour les conteneurs Keyed f
et FunctorWithIndex i f
?
Je me demande ce qu'est 'Zip' dans' lens'? – phadej
Excellente question! La réponse ne me vient pas immédiatement à l'esprit. Je vais devoir m'asseoir et réfléchir, peut-être travailler avec un crayon. –
@phadej 'Zip' ressemble beaucoup à' Applicative' (http://stackoverflow.com/questions/36474647/haskell-depth-for-each-node-in-binary-tree-using-reader-monad/ 36480067 # 36480067) pour moi –