类似于这个case class问题,但有一个小变化: 我有一个case class作为属性包含了一些深度嵌套的case classes。举个简单的例子,case class Foo(fooPropA:Option[String], fooPropB:Option[Int]) case cla...
我有一些类似的数据类型data Outer = Outer { _list :: [ Inner ] } data Inner = Inner { _bool :: Bool } 使用 Control.Lens,我可以像这样访问第 i 个内部的 _bool(位于“State Outer”单子中...
为什么我们需要 Control.Lens.Reified?是否有什么原因我不能直接将一个Lens放入容器中?reify到底是什么意思?
我一直在阅读wreq教程: 透镜提供了一种聚焦于Haskell值的一部分的方法。例如,Response类型具有一个responseStatus透镜,它聚焦于服务器返回的状态信息。ghci> r ^. responseStatus Status {statusCode = 200,...
我正在尝试通过在Haskell中实现来学习有关镜头的知识。我已经实现了如下所示的view组合器: {-# LANGUAGE RankNTypes #-} import Control.Applicative import Data.Traversable type Lens s a = ...
一个棱镜是一种用于聚焦到乘积类型的光学器件,而仿射遍历是一种可以在1元素的0处进行聚焦的光学器件,即AffineTraversal s t a b与(s -> Maybe a, (s, b) -> t)同构。据我所知,当适当编码棱镜时,将镜头与棱镜组合可以得到仿射遍历。 我有兴趣...
基于: import shapeless._ case class Content(field: Int) lens[Content] >> 'field 我正在尝试制作一个镜头创建方法,类似于: def makeLens[T <: Product](s: Symb...
我正在使用 Control.Lens。我正在编写的实际函数相当复杂,但是为了这个问题,我将其简化为一个最小的失败示例: import Control.Lens exampleFunc :: Lens s t a b -> String exampleFunc _ = "Exa...
考虑以下代码:case class Person(name :String) case class Group(group :List[Person]) val personLens = GenLens[Person] val groupLens = GenLens[Group] 我如何根据...