7得票3回答
使用镜头两次的技术

我在使用 lens 库解决一个问题时遇到了困难。我试图将更新后的数据结构和聚焦于该更新结构部分的镜头传递给另一个名为 g 的函数。我传递镜头和数据结构是因为 g 需要从数据结构中获取一些共享信息以及一些信息片段。如果有帮助的话,数据结构包含有关联合概率分布的信息,但是 g 仅对任一边缘起作用,...

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

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

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

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

17得票2回答
组合镜头

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

7得票1回答
使用 Monocle Lenses 修改一个属性,该属性的值是另一个属性的值

我有以下模型。 import monocle.macros.Lenses import monocle.function.all._ import monocle.std.list._ @Lenses("_") case class Poll(pollChoices: List[PollC...

20得票1回答
镜头/棱镜与错误处理

假设我有一对转换函数string2int :: String -> Maybe Int int2string :: Int -> String 使用Optics,我可以很容易地表示这些。 stringIntPrism :: Prism String Int 然而,如果我想要表示...

18得票2回答
有人能解释一下关于“lens”库的图表吗?

如果您查看Hackage上的Lens条目、Lens Github仓库,甚至在Google上搜索Lens,您会发现很多部分性的参考资料,例如入门教程/视频、示例、概述等。由于我已经了解了大部分基础知识,所以我正在寻找一个更完整的参考资料,以帮助我获取更多关于高级功能的知识。换句话说,我仍然不知道...

8得票2回答
镜头进入Swift属性

有没有一种方法可以自动生成Swift类中属性的getter/setter函数对?类似于Haskell中的镜头。我已经能够手动完成以下操作: class PropertyLens<U, T> { let getter: U -> T let setter: (...

20得票1回答
类型变量将会逃离其作用域

我正在尝试通过给函数添加一个镜头参数(来自xml-lens包)来重构它。我对类型量词缺少一些理解。这里发生了什么? *Main> let z name = listToMaybe $ pom ^.. root ./ ell name . text *Main> :t z z ::...

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

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