问题标签 [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 投票
2 回答
298 浏览

haskell - 如何将两个简单镜头的结果合二为一

假设我有一个定义如下的数据类型:

现在,如果我想定义一个聚焦从 aRegister到 a的镜头Word16。这个函数应该如下所示:

( Word8, Word16, shiftL, and.&.来自Data.Wordand Data.Bits, 我RankNTypes在源代码的开头启用了。)

但是,此代码根本不起作用。我想这可能是因为完整的Lens类型定义有四个类型参数,这将比一个简单Lens'的更复杂Monad

那么通过什么方式可以达到上述的效果呢?

谢谢。

0 投票
2 回答
1108 浏览

haskell - 如何使用镜头库按索引从列表中删除项目?

我可以使用这样的镜头查看列表中的第 4 项:

有没有什么东西可以代替“预览”以便从列表中删除第四个项目而不是查看它?返回列表应与原始列表相同,即第 4 项将被删除。

或者也许有一种方法可以使用过滤功能来做到这一点?

0 投票
1 回答
66 浏览

haskell - 使用 fclabels 中的“左”镜头时键入失败

我做了一个最小的例子来测试 fclabels。使用镜头从 Either 值中检索“正确”值。为什么会失败?我错过了什么吗?

0 投票
2 回答
635 浏览

swift - 将镜头转换为 Swift 属性

是否有某种方法可以为 Swift 中的类中的属性自动生成 getter/setter 函数对?类似于 Haskell 中的镜头线的东西。

我已经能够手动执行以下操作:

然而,这变得冗长、乏味并且比我想要的更容易出错。有没有我缺少的内置功能?

0 投票
2 回答
274 浏览

haskell - 使用镜头作为“地图”

我想将这行代码转换map (^?! ix 0) [[0, 1], [4, 5], [9, 1]]为完全使用镜头,例如[[0, 1], [4, 5], [9, 1]] & each . ix 0. 但是,类型不匹配。这样做的正确方法是什么?

0 投票
1 回答
186 浏览

haskell - Traversable 到 Traversable 只遍历具有指定索引的元素

我想知道是否可以构造以下功能

用于pure除第 i 个元素外的所有元素v -> a v(使用指定索引遍历值)。

基本上我试图为所有可遍历的函数概括以下函数。还是不可能?Traversable 总是可以转换为Zipper,我认为它可以被推广。

0 投票
1 回答
2155 浏览

haskell - 类型变量将逃脱其范围

我试图通过给它一个镜头参数(来自xml-lens包)来重构我的函数。我错过了关于类型量词的一些东西。这里发生了什么?

有趣的是,这个签名有效。

0 投票
2 回答
429 浏览

haskell - 阵列和索引透镜中的阵列索引透镜

如果数组和索引都处于状态,这是使用镜头进行数组索引的更简单版本,因为我已经解决了一些问题。我不确定是否应该删除原件或原地编辑。

给定

我想写一个函数

这需要arridx镜头并构造一个组合镜头,可用于读取和写入 指向的元素idx。我想要的镜头存在:

我理解这一点comboGetcomboSet原则上可以重写为单独使用arridx镜头。

combo1我的问题是:用arrand构建最惯用的方法是什么idx

0 投票
1 回答
818 浏览

haskell - 带遍历的 Haskell 镜头教程

我正在尝试遵循本教程:http ://blog.jakubarnold.cz/2014/08/06/lens-tutorial-stab-traversal-part-2.html

我正在使用加载到 ghci 中的以下代码:

从那里开始,像这样简单的东西可以工作:

但是,当我尝试执行下一步时,它不起作用:

我得到:

我看到 Lens 具有 Functor 的类型约束,而 traverse 作为 Applicative 对 f 具有更受约束的类型约束。为什么这不起作用,为什么博客教程建议它起作用?

0 投票
2 回答
470 浏览

haskell - 仅从模块中导出 getter 或 setter

有没有办法让我只从带有镜头的模块中导出特定的 getter xor setter?

例如,让我们假设一个数据结构具有始终为的不变量,>= 0仅通过递增它进行修改,并且仅使用初始值创建0

我怎么能只导出count吸气剂?