联合镜头的目的是什么?

6

在阅读Lens over Tea #1文章时,我发现了united镜头。我的实现如下:

united :: Lens' a ()
united f v = const v <$> f ()

这与Lens库实现基本相同。

让我完全困惑的是,我为什么要首先使用这样的函数?这个镜头有什么用处吗?


或者只是 united f s = s <$ f (),在我看来这样更容易阅读。 - MikaelF
1个回答

2
我从未实际看到或使用过这个功能。但我想它的用处与id函数(返回其参数不变)或Identity单子(一种没有“影响”的单子;等价于根本不使用单子)相同,都具有类似的用途。
这些以及其他类似的概念(包括()类型!)基本上是“无操作”结构,因此当您仅查看它们时,它们似乎毫无用处。但当涉及到多态性时,它们变得有用,通过为您提供可用于通用操作的“无操作”选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接