问题标签 [lenses]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
213 浏览

haskell - 如何编写 Control.Lens.AT 的实例

我有一个数据结构,可以理解为类似于Data.Map它将一种类型的键映射到另一种类型的值。我想Control.Lens.At为这种类型编写一个实例,但我似乎永远无法满足所有要求。

给定Struct k v, lookup,和insert,我必须做什么才能工作?updatedeleteinstance At (Struct k v)

0 投票
1 回答
490 浏览

haskell - 使用 Control.Lens 组合镜头,其中必须调用中间函数

假设我有以下内容:

我试图通过构成镜头来了解通过多层向下延伸的各种方法。我知道如何进行这些操作:

但是,如果我想更改书名怎么办?也许我想用 来改变它们map,或者我只想用 改变第三个!! 2?看来我应该为此制作一个新镜头。我想我应该用一个中间函数来组成booksandtitle镜头,即mapor !!

我该怎么做呢?

0 投票
2 回答
143 浏览

haskell - 为镜头寻找缺失的状态组合器

我目前的代码如下所示:

foo一个字段在哪里,Lens并且FoorunFoo :: MonadState m => Foo -> m Foo

我认为应该有一种方法可以在一行中执行此操作,但我找不到。我认为它应该有这样的评论:

问题:

  • 这样的组合器存在吗?如果是这样,那是什么?
  • 当我遇到这样的另一个问题时,搜索它的最佳方法是什么(即通常我会在 Hoogle 中输入它,但我没有运气好用镜头库做到这一点)
  • 这实际上是 Control.Monad 中的原始组合器吗?(如果这是 kleisli 箭的另一份工作,我会有点尴尬)
0 投票
1 回答
1169 浏览

scala - Scalaz:如何用价值镜头组成地图镜头?

这里有一个 Scalaz 地图镜头的例子:Dan Burton 称之为containsKey,它的灵感来自 Edward Kmett 的演讲。Scalaz 7 中也有一些mapVPLens对修改映射中的值很有用的东西。

我的问题是:如果我有一个用于修改 typeV的镜头和一个用于 a 的镜头,我该Map[K,V]如何构图?我一直在寻找一个很好的简单示例,但 Scalaz 中仍然缺乏示例。

我对 Scalaz 6 和 Scalaz 7 解决方案都感兴趣。

0 投票
1 回答
108 浏览

haskell - 构建相同的镜头

我正在尝试Lens从一个 getter 和一个 setter 创建一个我从另一个得到的Lens

但是,它失败了一个晦涩的(对我来说)错误:

我究竟做错了什么?Getting这可能是非常基本的东西,但是,唉,我对真正发生的事情 ( , s)的了解还不够,无法Accessor自己解开它。

0 投票
2 回答
250 浏览

haskell - Control.Lens 镜头全图

我有一张从 A 型到 B 型的全图。

我用作Data.Map示例实现,但它可以是任何东西,例如一个Array甚至是一个Bool索引元组:

我想要一个tmAt构建镜头的功能:

问题是我如何构造tmAttmGettmSettmModify)?

0 投票
2 回答
1922 浏览

scala - 用于采集参数的 Scala 镜头

使用镜头更新集合中元素的最佳方法是什么?例如:

如果我想使用镜片创建一个改变单一成分数量的新配方,最好的方法是什么?

我尝试过的方法是动态创建一个镜头:Lens[List[Ingredient], Ingredient]. 不过这感觉有点笨拙:

0 投票
1 回答
2368 浏览

haskell - Haskell Control.Lens Traversing Prism

我有一个深度嵌套的数据结构,我正在使用 Control.Lens.* 来简化在状态单子中访问它的值。

所以考虑以下几点:

我如何在 Maybe 上“功能性地”操作?我想写一个惯用的getter:

更好的是,当 Config 嵌套更深时,我们将如何处理这种情况?

我们可以使用访问器 foo 和 bar 来返回修改后的 Bar 吗?

0 投票
3 回答
1760 浏览

haskell - Filtering composite structures with Lens

I have a [(a, Maybe b)], and want to obtain a [(a, b)], with all pairs where the second element was Nothing filtered out. Is there a concise way to describe this operation using lens?

0 投票
1 回答
299 浏览

haskell - 将 Lens' ab 转换为 Lens' a (Maybe b)

我有几个数据结构,比如

所以我决定写一个简单的类型类,让它更容易编写

但是后来我遇到了一些问题,其中一些结构具有相应的字段作为可选

现在我不能再使用类型类了。由于具有该字段可选的数据类型的数量大致相同,因此我决定更改类型类会更好:

但是由于我对镜头库不是很有经验,所以我一直在弄清楚如何使这个新镜头与 和 的类型一起Data1工作Data2。理想情况下,我希望能够查看它并获取Maybe Int任何类型的值,并且在设置时我希望Just x将字段设置为xforData1并且Data2在传递时成为这两种类型的无操作Nothing

这可以使用现有的组合器还是我必须自己编写镜头?我这样做很好,但是大多数现有教程都使用 TH 并掩盖了手工编写的细节。

我正在使用 GHC 7.6.3 和lens3.10。