问题标签 [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 - 使用镜头选择元组的字段(Haskell)
以下不起作用,我该如何解决?
我想要的是(2, 3)
。
haskell - 如何使用“Of”镜头?(哈斯克尔)
我想写:
使用镜头。我想使用minimumOf
镜头,但我无法从它的类型中弄清楚如何使用它。
我正在寻找类似的东西
但它不输入检查:
functional-programming - purescript-lens 合成类型错误
我正在尝试使用 purescript-lens 来更新嵌套记录的属性。但是,当我合成镜头以到达该属性时,我收到以下类型错误:
我对镜头和纯脚本比较陌生,所以它可能是简单而明显的。
产生此错误的相关代码如下(是的,它基于 purescript-thermite-todomvc):
我要更新的属性是 st.item.description ,上面的错误是指以“updateState (NewItem ...”开头的行。奇怪的是,下一行也报告了同样的错误。
关于如何解决类型错误的任何想法?
谢谢
haskell - 有条件地修改镜头的目标
如果游戏规则允许移动,我有一个函数可以从输入和棋盘生成更新的棋盘:
该板包含在GameState
带有一些附加数据的类型中:
move
现在,如果产生Just
值,我想使用镜头更新游戏状态下的棋盘。我可以使用辅助函数来做到这一点:
但是,我想知道是否有一个组合器
Lens
仅在提供的函数返回 a 时才修改 a 的目标Just
。我找到了?~
操作员,但它在左侧处理了偏袒。
是否有一个(可能更通用的)组合器可以实现这一点,或者是否有另一种方式以简洁和惯用的方式表达这一点?
haskell - 用于 GADT 的 makeLenses (Haskell)
是否有makeLenses
GADT 的等价物?如果我有一个简单的GADT
喜欢:
有没有办法通过传入构造函数和字段名称列表来自动生成镜头?
ocaml - OCaml 世界中的**镜头**是什么
谁能用 OCaml 解释 *什么是镜头?
我试图用谷歌搜索它,但几乎所有这些都在 Haskell 的世界中。
只希望在 OCaml 的世界中对它进行一些简单的演示,比如它是什么,它可以用来做什么等。
scala - Play 框架中的镜头支持
Play 框架是否默认包含任何镜头支持?像Monocole或 Scalaz 之类的东西。也许有一些我不知道的推荐替代方法(以及它们的基本原理)。
场景:我有一个不可变的、深度嵌套的案例类对象,我想复制它,并在对象的某处更改了字段。
我特别希望非常简单地做到这一点,而不需要太多样板,就像 Monocole 等镜头库所做的那样。
我很惊讶 Play 框架没有内置任何支持。我错过了什么吗?如果没有,是否有任何已知的支持计划?
haskell - 如何使用带有 IxSet 的镜头?
说,我有用户包含在用户列表中,如下所示:
什么命令会给我一个镜头来查看用户列表的第三个成员?
也许,因为我的数据定义允许多个用户使用相同的 ID,所以镜头可能不是我想要的……遍历?棱镜?
对我来说,部分困难在于我所有的谷歌搜索都将我带到了一个已弃用的包,称为 data-lens-ixset。
haskell - 如何在类似地图的容器中将镜头定义为总和类型?
我可以Lens'
手动定义需要的:
它的工作原理如下:
我验证了该定义是合法的:
也许用某种方式prismToLens :: Prism' a b -> Lens' (Maybe a) (Maybe b)
,你可以做到at k . prismToLens _Left
。但我不确定是否prismToLens
有意义?Hoogle 对lens
:(
编辑似乎第三定律并不总是成立。Key
如果您更改为 ,很容易找到反例Bool
。然而,在我的应用程序中,Map
它实际上是依赖的,即 sum 分支取决于密钥,所以Lens
法律应该成立(如果我访问foo
,我知道它应该存在Left
或根本不存在)。
haskell - Haskell 中的镜头和 Clojure 中的解构有何异同?
假设:
- 我想解析一个嵌套的 JSON 字符串。
- 我知道 Haskell 鼓励用类型系统解决问题,而 Clojure 避开类型系统,更喜欢用数据结构解决问题。
- 我知道在这两种语言中,这个过程都被称为解构——但它在 Clojure 中没有另一个名字,而在 Haskell 中,这也被称为使用 lens,所以我将 Clojure 称为解构和移动上
它的目的是从数据结构中获取health
值。game
我们可以在 Clojure中进行这样的解构:
目的是从嵌套结构中获取名称、页面等的嵌套值。
在这两种情况下,您都提出了一种从嵌套结构中可重用检索值的机制。
我的问题是:Haskell 中的镜头和 Clojure 中的解构有何异同?