联合镜头的目的是什么?

时间:2015-02-14 14:30:05

标签: haskell lens

在阅读Lens over Tea #1文章时,我找到了united镜头。我的实现是

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

implementation in the Lens library几乎相同。

让我感到困惑的是为什么我首先想要这样的功能呢?这个镜头有用吗?

1 个答案:

答案 0 :(得分:2)

我以前从未见过或曾经使用过这个。但我认为它的有用方式与id函数(返回未修改的参数)或Identity monad(没有“效果”的monad)相同;完全等同于不使用monad所有)都很有用。

这些和其他类似的概念(包括()类型!)基本上都是“无所事事”的结构,所以当你自己看它们时它们似乎毫无用处。但是,当涉及到多态时,它们会变得有用,通过给你一个“无所事事”选项来传递给一般操作。