可能重复: lenses, fclabels, data-accessor - which library for structure access and mutation is better
我将在我的下一个Haskell项目中使用并学习一个镜头包。当我发现这篇文章提到了Control.Lens包中的van镜头时,我几乎决定了Control.Lens的包。
我还没有真正理解其中的不同之处,无法决定使用哪一种。你建议我在一个真实世界的项目中学习/使用哪一个软件包?
谢谢。
lenses, fclabels, data-accessor - which library for structure access and mutation is better
发布于 2012-11-08 13:44:33
几乎可以肯定的是,Control.Lens是您想要的。Data.Lens是第一位的,而且比较简单,但是Control.Lens有许多优点,并且正在积极开发。
除了透镜,Control.Lens还有许多相关的类型,比如遍历(遍历就像可以引用n值的透镜,而不仅仅是一个)、折叠、只读/修改镜头、索引透镜、同构.它还附带了一个更大的有用函数库和标准库类型的预定义透镜库、用于派生透镜的模板Haskell,以及一些用于泛型拉链和单板风格泛型遍历的代码。
这是一个很大的图书馆--你不需要全部使用,但是很高兴你已经写好了你想要的东西。
Data.Lens的主要优点是它更简单,因此不需要Haskell 98以外的扩展。但是请注意,如果您只想从库中导出Control.Lens-style镜头,您可以不离开Haskell 98就可以这样做--实际上,根本不依赖于包。
发布于 2012-11-08 07:14:57
如果您正在处理的是一个真实世界项目(tm),我强烈推荐Control.Lens。Edwardk最近在这方面做了很多努力,我相信他很想听听你的用例。在我看来,这将成为典型的透镜库。我相信可以肯定地说,您可以使用Data.Lens所做的一切,也可以使用Control.Lens。
发布于 2012-11-08 21:27:37
Data.Lens要简单得多,也更容易使用。Control.Lens有大量的模块,并使用语言扩展来完成工作。
https://stackoverflow.com/questions/13282874
复制相似问题