A tiny lens library with no dependencies
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 |
ghc-microlens
注意:如果你正在编写应用程序,你可能需要 microlens-platform——它拥有最多的功能。microlens 更适合那些想要一个轻量级镜头库的库作者(毕竟,镜头几乎对所有事情都很有用,而不仅仅是更新记录!)。
本库是从 lens 中提取出来的(无依赖项)。它不是一个不适合“现实世界”的玩具镜头库,而仅仅是一个小型的镜头库。它与 lens 兼容,并且应该具有相同的性能。它还拥有更完善的文档。
GitHub 上有一个更长的 README。其中包含给 lens 用户的迁移指南、该系列中其他包的说明、关于可替代使用的其他镜头库的讨论等等。
以下是本库的一些使用场景:
你想在自己的库中定义镜头或遍历,但不想依赖 lens。提供镜头通常能让使用库的过程更加愉快。
你只是想能够使用镜头来转换数据(或者甚至只是使用 over _1 来更改元组的第一个元素)。
你是镜头新手,想要一个小型库来试用。
但是,在以下情况不要使用本库:
你需要同构(Isos)、棱镜(Prisms)、索引遍历,或者任何此处未定义的功能(不过一些索引函数可在其他地方找到——containers 和 vector 为它们的类型提供了这些函数,ilist 为列表提供了索引函数)。
你想要一个实现清晰、易于理解的库(在这种情况下,你应该查看 lens-simple)。
如前所述,如果你正在编写一个更广泛使用镜头的应用程序,请查看 microlens-platform——它结合了大多数其他 microlens 包(microlens-mtl、microlens-th、microlens-ghc)的功能。
如果你想导出 getter 或 fold,并且不介意 contravariant 依赖,请考虑使用 microlens-contra。
如果你以前从未使用过镜头,请阅读本教程。(它是针对 lens 的,但同样适用于 microlens。)
请注意,从 GHC 7.10(base-4.8)开始,microlens 没有依赖项。在此之前,它依赖于 transformers-0.2 或更高版本。