13得票3回答
在Scala中合并两个case类,但具有深度嵌套类型,而无需使用镜头样板代码。

类似于这个case class问题,但有一个小变化: 我有一个case class作为属性包含了一些深度嵌套的case classes。举个简单的例子,case class Foo(fooPropA:Option[String], fooPropB:Option[Int]) case cla...

13得票2回答
如何使用Control.Lens来更新列表的第i个元素?

我有一些类似的数据类型data Outer = Outer { _list :: [ Inner ] } data Inner = Inner { _bool :: Bool } 使用 Control.Lens,我可以像这样访问第 i 个内部的 _bool(位于“State Outer”单子中...

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

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

13得票3回答
镜片和部分镜片有什么区别?

“Lens”和“Partial Lens”在名称和概念上看起来非常相似。它们有什么区别?在什么情况下需要使用其中之一? 标记Scala和Haskell,但欢迎与任何拥有镜头库的函数式语言相关的解释。

12得票1回答
如何实现Haskell中“使用函数组合来组合镜头”这种奇怪的参数顺序?

我一直在阅读wreq教程: 透镜提供了一种聚焦于Haskell值的一部分的方法。例如,Response类型具有一个responseStatus透镜,它聚焦于服务器返回的状态信息。ghci> r ^. responseStatus Status {statusCode = 200,...

12得票3回答
Haskell 镜头:如何使 view 与 traverse 兼容?

我正在尝试通过在Haskell中实现来学习有关镜头的知识。我已经实现了如下所示的view组合器: {-# LANGUAGE RankNTypes #-} import Control.Applicative import Data.Traversable type Lens s a = ...

11得票1回答
棱柱或仿射遍历的对偶是什么?

一个棱镜是一种用于聚焦到乘积类型的光学器件,而仿射遍历是一种可以在1元素的0处进行聚焦的光学器件,即AffineTraversal s t a b与(s -> Maybe a, (s, b) -> t)同构。据我所知,当适当编码棱镜时,将镜头与棱镜组合可以得到仿射遍历。 我有兴趣...

11得票1回答
Shapeless:由案例类或字段参数化的通用镜头

基于: import shapeless._ case class Content(field: Int) lens[Content] >> 'field 我正在尝试制作一个镜头创建方法,类似于: def makeLens[T <: Product](s: Symb...

11得票2回答
Control.Lens中的"Illegal polymorphic or qualified type"是指非法的多态或限定类型。

我正在使用 Control.Lens。我正在编写的实际函数相当复杂,但是为了这个问题,我将其简化为一个最小的失败示例: import Control.Lens exampleFunc :: Lens s t a b -> String exampleFunc _ = "Exa...

10得票2回答
Scala的Monocle中的列表过滤

考虑以下代码:case class Person(name :String) case class Group(group :List[Person]) val personLens = GenLens[Person] val groupLens = GenLens[Group] 我如何根据...