10得票2回答
Haskell的lens包如何处理同时也是关键字的字段?

当一个去糖化的字段是一个关键字时,Lens如何处理?我记得读过一些特殊的处理方式,但我不记得在哪里读到的或“lensed”访问器的名称会变成什么。 考虑以下内容:{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #...

8得票1回答
总结一下Haskell记录的列表

假设我有一份记录列表,我想通过取中位数来对其进行总结。更具体地说,假设我有 data Location = Location { x :: Double, y :: Double } 我有一组测量数据,想要将其总结为一个中位数位置,类似于以下内容: Location (median (...

8得票2回答
使用 Lens 作为 `map`

我希望将这行代码 map (^?! ix 0) [[0, 1], [4, 5], [9, 1]] 完全转换为使用lens的形式,类似于 [[0, 1], [4, 5], [9, 1]] & each . ix 0。但是类型不匹配。正确的做法是什么?

40得票3回答
镜头有什么用处?

我似乎无法找到任何有关镜头在实际示例中用途的解释。下面这段来自Hackage页面的简短段落是我能找到的最接近答案的内容: 这个模块提供了一种方便的方式来访问和更新结构中的元素。它非常类似于Data.Accessors,但是更加通用并且依赖更少。我特别喜欢它如何干净地处理状态单子中的嵌套...

7得票2回答
使用Haskell中的Lens来修改值

我经常使用这个模式: do let oldHeaders = mail ^. headers put $ (headers .~ (insert header value oldHeaders)) mail 这似乎是Control.Lens应该能够做到的事情,但我猜我还没...

13得票2回答
使用lens向嵌套的Map中添加键和值

我正在努力解决使用Aeson lenses操作JSON时遇到的问题。我的任务很简单,只需向JSON中嵌套的对象添加一个键即可。我已经通过以下方式成功更改了现有的键:> :set -XOverloadedStrings > import Control.Lens > impor...

16得票1回答
`Optional`是否有van Laarhoven表示法?

许多类型的光学都有van Laarhoven表示法。 例如,类型为的Lens可以表示为: Functor f => (a -> f b) -> s -> f t 同样地,一个 Traversal 可以用类似的方式表示,只需将 Functor 约束替换为 App...

7得票1回答
Scalaz:如何将一个map lens与一个value lens组合?

这里有一个 Scalaz map lens 的例子(点击此处),Dan Burton 将其称为 containsKey,并受到 Edward Kmett 讲座的启发。在 Scalaz 7 中还有一个名为 mapVPLens 的内容,用于修改 Map 中的值。 我的问题是:如果我有一个用于修改...

7得票2回答
从模块中仅导出getter或setter

有没有一种方法可以让我从一个使用 lens 的模块中只导出特定的 getter 或 setter? 例如,假设一个数据结构具有不变性,始终为“> = 0”,只能通过递增进行修改,并且只能使用初始值为“0”创建: module Something ( Counter -- e...

8得票1回答
为GADTs制作镜头(Haskell)

是否有类似于 makeLenses 的东西可以用在 GADTs 上?假设我们有一个简单的 GADT,例如: data D a b where D :: (Ord a, Ord b) => !a -> !b -> D a b 有没有一种方法可以通过传递构造函数和字段名...