问题标签 [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.
haskell - 如何将两个简单镜头的结果合二为一
假设我有一个定义如下的数据类型:
现在,如果我想定义一个聚焦从 aRegister
到 a的镜头Word16
。这个函数应该如下所示:
( Word8
, Word16
, shiftL
, and.&.
来自Data.Word
and Data.Bits
, 我RankNTypes
在源代码的开头启用了。)
但是,此代码根本不起作用。我想这可能是因为完整的Lens
类型定义有四个类型参数,这将比一个简单Lens'
的更复杂Monad
。
那么通过什么方式可以达到上述的效果呢?
谢谢。
haskell - 如何使用镜头库按索引从列表中删除项目?
我可以使用这样的镜头查看列表中的第 4 项:
有没有什么东西可以代替“预览”以便从列表中删除第四个项目而不是查看它?返回列表应与原始列表相同,即第 4 项将被删除。
或者也许有一种方法可以使用过滤功能来做到这一点?
haskell - 使用 fclabels 中的“左”镜头时键入失败
我做了一个最小的例子来测试 fclabels。使用镜头从 Either 值中检索“正确”值。为什么会失败?我错过了什么吗?
swift - 将镜头转换为 Swift 属性
是否有某种方法可以为 Swift 中的类中的属性自动生成 getter/setter 函数对?类似于 Haskell 中的镜头线的东西。
我已经能够手动执行以下操作:
然而,这变得冗长、乏味并且比我想要的更容易出错。有没有我缺少的内置功能?
haskell - 使用镜头作为“地图”
我想将这行代码转换map (^?! ix 0) [[0, 1], [4, 5], [9, 1]]
为完全使用镜头,例如[[0, 1], [4, 5], [9, 1]] & each . ix 0
. 但是,类型不匹配。这样做的正确方法是什么?
haskell - Traversable 到 Traversable 只遍历具有指定索引的元素
我想知道是否可以构造以下功能
用于pure
除第 i 个元素外的所有元素v -> a v
(使用指定索引遍历值)。
基本上我试图为所有可遍历的函数概括以下函数。还是不可能?Traversable 总是可以转换为Zipper,我认为它可以被推广。
haskell - 类型变量将逃脱其范围
我试图通过给它一个镜头参数(来自xml-lens
包)来重构我的函数。我错过了关于类型量词的一些东西。这里发生了什么?
有趣的是,这个签名有效。
haskell - 阵列和索引透镜中的阵列索引透镜
如果数组和索引都处于状态,这是使用镜头进行数组索引的更简单版本,因为我已经解决了一些问题。我不确定是否应该删除原件或原地编辑。
给定
我想写一个函数
这需要arr
和idx
镜头并构造一个组合镜头,可用于读取和写入 指向的元素idx
。我想要的镜头存在:
我理解这一点comboGet
,comboSet
原则上可以重写为单独使用arr
和idx
镜头。
combo1
我的问题是:用arr
and构建最惯用的方法是什么idx
?
haskell - 带遍历的 Haskell 镜头教程
我正在尝试遵循本教程:http ://blog.jakubarnold.cz/2014/08/06/lens-tutorial-stab-traversal-part-2.html
我正在使用加载到 ghci 中的以下代码:
从那里开始,像这样简单的东西可以工作:
但是,当我尝试执行下一步时,它不起作用:
我得到:
我看到 Lens 具有 Functor 的类型约束,而 traverse 作为 Applicative 对 f 具有更受约束的类型约束。为什么这不起作用,为什么博客教程建议它起作用?
haskell - 仅从模块中导出 getter 或 setter
有没有办法让我只从带有镜头的模块中导出特定的 getter xor setter?
例如,让我们假设一个数据结构具有始终为的不变量,>= 0
仅通过递增它进行修改,并且仅使用初始值创建0
:
我怎么能只导出count
吸气剂?