2016-07-28 1 views
0

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?

Répondre

2

De l'ensemble keys readme-

Dans la pratique, ce package est en grande partie englobée par le paquet lens, mais il est maintenu pour l'instant car il a des dépendances beaucoup plus simples.

+0

Je me demande ce qu'est 'Zip' dans' lens'? – phadej

+0

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. –

+0

@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 –