8得票3回答
如何使用镜头在地图中查找值,增加它或将其设置为默认值。

在处理名为AppState的状态时,我想要跟踪一些实例的数量,这些实例具有不同类型InstanceId的id。 因此,我的状态看起来像这样: import Control.Lens data AppState = AppState { -- ... , _in...

10得票2回答
Scalaz 镜头组合

这里有一个非常简单的问题。在观看了一个优秀的透镜介绍视频之后: http://www.youtube.com/watch?v=efv0SQNde5Q 我想尝试一下讲座中涉及的一个简单示例:import scalaz.Lens._ fst.andThen(snd).set(((1,2),3)...

7得票1回答
有没有“缩小”的对应操作?

zoom函数可以让我们在某些状态变量已经被定义的情况下,只使用其中一部分状态变量进行状态操作。 {-# LANGUAGE TemplateHaskell #-} import Control.Lens import Control.Monad.Trans.State import Con...

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

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

178得票1回答
镜头,fclabels,data-accessor - 哪个用于结构访问和修改的库更好?

至少有三种流行的库可用于访问和操作记录字段。我所知道的有:data-accessor、fclabels 和 lenses。 个人而言,我开始使用 data-accessor 并一直在使用它们。然而最近在 haskell-cafe 上出现了 fclabels 更优秀的观点。 因此,我对这三个...

17得票2回答
组合镜头

使用一个镜头库,我可以对单个目标应用修改函数,示例如下:Prelude Control.Lens> (1, 'a', 2) & _1 %~ (*3) (3,'a',2) Prelude Control.Lens> (1, 'a', 2) & _3 %~ (*3) (...

10得票2回答
为什么我的数据类型需要成为Monoid的实例才能使用这个镜头?

我在使用下面的代码处理一个包含类型为SceneGraph的'_scene'字段的记录。我已经使用makeLenses创建了它的镜头。inputGame :: Input -> Game -> Game inputGame i g = flip execState g $ do ...

13得票2回答
为什么我们需要Control.Lens.Reified?

为什么我们需要 Control.Lens.Reified?是否有什么原因我不能直接将一个Lens放入容器中?reify到底是什么意思?

15得票3回答
如何处理 Control.Lens.Indexed 中 at 函数的 Maybe 结果,而不需要 Monoid 实例

我最近在Hackage上发现了lens包,并尝试在一个小测试项目中使用它,如果我继续努力,这个项目可能会变成一个MUD/MUSH服务器。 下面是我的代码的简化版本,展示了我目前遇到的问题,这些问题涉及用于访问键/值容器(在我的情况下是Data.Map.Strict)的at lens。 {-...

8得票3回答
使用Data.Lens,如果列表元素满足某些条件,则更改该元素,否则添加新元素

我有一个记录列表,需要一个函数来搜索具有给定名称的记录,并修改该记录的值或者如果没有匹配的记录,则将新记录附加到结果列表中。这是我的代码: import Control.Lens import Control.Applicative ((<$>), pure) import Da...