问题标签 [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 回答
17315 浏览

data-structures - lens, fclabels, data-accessor - 用于结构访问和变异的库更好

至少有三个流行的库用于访问和操作记录字段。我知道的有:数据访问器、fclabels 和镜头。

就我个人而言,我从数据访问器开始,现在正在使用它们。然而,最近在 haskell-cafe 上,有一种观点认为 fclabels 更胜一筹。

因此,我对比较这三个(也许更多)库很感兴趣。

0 投票
2 回答
16084 浏览

haskell - 功能性镜片

有人可以向我解释功能性镜片吗?对于谷歌来说,这是一个令人惊讶的困难主题,我没有取得任何进展。我所知道的是,它们提供了与 OO 类似的获取/设置功能。

0 投票
1 回答
408 浏览

haskell - 依赖类约束的模糊类型变量

我正在为Snap web 框架编写一个新的身份验证系统,因为内置的身份验证系统不够模块化,并且它具有一些对我的应用程序来说是冗余/“自重”的功能。不过,这个问题根本与 Snap 无关。

这样做时,我遇到了类型约束不明确的问题。在下面的代码中,对我来说很明显的类型back只能是b函数类型中的类型变量,但 GHC 抱怨类型不明确。

如何在不使用 eg的情况下更改以下代码,使类型为backis (因为问题出在约束上,而不是类型太笼统)?某处是否需要功能依赖?bScopedTypeVariables

相关类型类:

失败的代码:

完整错误:

0 投票
2 回答
978 浏览

scala - 在深度复制到地图值时避免使用镜头重复

我有一个不可变的数据结构,其中我在 Maps 中有嵌套值,如下所示:

另外,我有一个当天所有交易的清单,我想生成TradingDay结构,其中

我试图通过折叠我的交易来弄清楚如何用镜头更新这个结构(见附录):

这行得通;但我想知道我是否可以减少重复性(在添加到地图然后修改地图键处的值方面。它似乎并不比相关的深层副本更烦人。

附录 - 镜片

0 投票
2 回答
3551 浏览

haskell - 使用镜片有什么好处和坏处?

镜头似乎没有任何缺点,同时比标准 Haskell 具有显着优势:有什么理由我不应该尽可能使用镜头吗?是否有性能考虑?此外,模板 Haskell 是否有任何重大开销?

0 投票
3 回答
4844 浏览

haskell - 镜头的用途/用途是什么?

我似乎找不到任何关于在实际示例中使用什么镜头的解释。Hackage 页面中的这个简短段落是我找到的最接近的:

该模块提供了一种方便的方式来访问和更新结构的元素。它与 Data.Accessors 非常相似,但更通用且依赖项更少。我特别喜欢它在状态单子中处理嵌套结构的干净程度。

那么,它们是用来做什么的呢?与其他方法相比,它们有哪些优点和缺点?为什么需要它们?

0 投票
2 回答
1118 浏览

scala - Scalaz 镜头组成

这里真的很简单的问题。看完精彩的镜头介绍后:

http://www.youtube.com/watch?v=efv0SQNde5Q

我想我可能会尝试演讲中提到的简单示例之一:

这之后是这个错误

关于如何完成这项工作的任何想法?

0 投票
4 回答
644 浏览

haskell - 使单个函数适用于列表、字节字符串和文本(可能还有其他类似的表示)

我正在编写一个函数,该函数在一系列任意符号中进行一些搜索。我想让它足够通用,以便它适用于列表、Foldables 以及ByteStrings 和Texts。将其概括为Foldable很简单。但是如何包含ByteStrings 和Texts 呢?当然我可以转换ByteString成一个列表,然后调用我的函数,但我会失去所有的优势ByteString

举一个具体的例子,假设我们要创建一个直方图函数:

但由于既不ByteString是 Text 也不是Foldable(它只存储Word8s/ Chars,而不是任意元素),我坚持创建更多看起来与以前完全相同的函数,只是使用不同的类型签名:

这是在像 Haskell 这样的函数式语言中人们所不期望的。

如何使其通用,histogram一劳永逸地编写?

0 投票
3 回答
1280 浏览

haskell - Data.Lens 或 Control.Lens

可能重复:
lens、fclabels、data-accessor - 用于结构访问和变异的库更好

我将在我的下一个 Haskell 项目中使用和学习 Lens 包。Data.Lens当我发现这篇文章在包装中提到 van Laarhoven Lenses 时,我几乎已经决定了Control.Lens包装。

我还不太了解这些差异,无法决定使用哪一个。你会建议我在现实世界的项目中学习/使用哪个包?

谢谢。

lens, fclabels, data-accessor - 用于结构访问和变异的库更好

0 投票
1 回答
248 浏览

scala - 通过继承更新不可变数据结构

我正在制作一个战略游戏,我尝试应用我学到的东西,尝试使用不可变的数据。在我的游戏中我有单位,这些单位可以有不同的特殊功能。例如,某些飞机可以隐藏自己。我搜索的是一种能够做某种事情的方法

无需复制粘贴:

在每个混合 Hidable 的案例类上。