Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 数据。镜头或控件。镜头_Haskell_Lenses - Fatal编程技术网

Haskell 数据。镜头或控件。镜头

Haskell 数据。镜头或控件。镜头,haskell,lenses,Haskell,Lenses,可能重复: 我将在下一个Haskell项目中使用和学习一个镜头包。当我发现这篇文章中提到了范拉霍芬镜头时,我几乎已经决定了包装 我还没有真正理解其中的差异,所以决定使用哪一种。您建议我在现实项目中学习/使用哪个软件包 谢谢 如果你正在处理一个真实世界的项目(tm),我强烈推荐Control.Lens。Edwardk最近在这方面做了很多努力,我相信他很乐意听到您的用例。在我看来,这将成为经典透镜库。我相信可以肯定地说,你可以用Data.Lens做任何事情,你可以用Control.Lens做任何事

可能重复:

我将在下一个Haskell项目中使用和学习一个镜头包。当我发现这篇文章中提到了范拉霍芬镜头时,我几乎已经决定了包装

我还没有真正理解其中的差异,所以决定使用哪一种。您建议我在现实项目中学习/使用哪个软件包

谢谢


如果你正在处理一个真实世界的项目(tm),我强烈推荐Control.Lens。Edwardk最近在这方面做了很多努力,我相信他很乐意听到您的用例。在我看来,这将成为经典透镜库。我相信可以肯定地说,你可以用Data.Lens做任何事情,你可以用Control.Lens做任何事情。

Control.Lens
几乎肯定是你想要的
Data.Lens
最先出现,而且更简单,但是
Control.Lens
有很多优点,正在积极开发中

除了镜头,
Control.Lens
有许多相关类型,比如遍历(遍历就像一个镜头,可以引用n个值而不是一个值)、折叠、只读/修改镜头、索引镜头、同构。。。它还提供了一个更大的有用函数库和用于标准库类型的预定义镜头、用于派生镜头的模板Haskell,以及一系列用于其他事情的代码,如通用拉链和uniplate样式的通用遍历

这是一个很大的图书馆——你不必全部使用,但是你想写的东西已经写好了,这很好


Data.Lens
的主要优点是它更简单,因此不需要Haskell 98之外的扩展。但请注意,如果您只想从库中导出
控件.Lens
样式的镜头,则无需离开Haskell 98即可完成此操作--事实上,完全不需要依赖于软件包。

Data.Lens
更简单,也更易于使用<代码>控制。Lens有大量的模块,并使用语言扩展来完成任务。

SO链接的答案有什么问题?该SO链接的答案可能有问题,但是如果你不告诉我们你想知道的答案中没有的东西,你就无法得到你想要的信息。我想这是我要寻找的第三种观点。这篇文章是两个软件包的创建者写的。他确实对这两个做了一些比较,但这有点让我摸不着头脑。另一篇文章甚至没有提到控制镜头,所以我不知道这是一个复制品。经过昨晚的进一步研究,我得出了相同的结论。谢谢你的精彩回复。