gpt4 book ai didi

haskell - 组合两个遍历,对中间层具有只读访问权限

转载 作者:行者123 更新时间:2023-12-04 04:11:29 25 4
gpt4 key购买 nike

我想组合两个遍历,然后用同样依赖于“中间”层的东西遍历组合。

我认为这意味着从两个 Traversal 中创建一个 IndexedTraversal:

rememberMidpoint :: Traversal' s a -> Traversal' a b -> IndexedTraversal' a s b

也许这个问题可以进一步简化为

remember :: Traversal' s a -> IndexedTraversal' s a a

remember :: Traversal' s a -> IndexedTraversal' a s a

?

所以我的问题是:

  • 我想为此使用 IndexedTraversal 是否正确?
  • 如果是,我将如何实现 rememberMidpoint 或两个 remember 函数之一 + 一种使用非索引 Traversal 组合其结果的方法?

最佳答案

@phadej帮助我解决了#haskell-lens 问题,将我指向 selfIndex :

Use a value itself as its own index. This is essentially an indexed version of id.

连同组合子 <. 组成索引和非索引遍历,我们得到:

rememberMidpoint :: Traversal' s a -> Traversal' a b -> IndexedTraversal' a s b
rememberMidpoint outer inner = outer . selfIndex <. inner

地址@András Kovács评论中的观点:

According to docs, your intended IndexedTraversal is not legal, as the a index changes if you modify an innermost b.

我不相信这是真的:如果我理解selfIndex对了,a在索引中将保留“原始”a , 不会成为修改过的 b里面。

关于haskell - 组合两个遍历,对中间层具有只读访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61651067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com