Haskell 如何在Control.Lens中使用IndexedTraversal为每个元素执行索引感知操作?

Haskell 如何在Control.Lens中使用IndexedTraversal为每个元素执行索引感知操作?,haskell,haskell-lens,Haskell,Haskell Lens,我有一个(来自包),我想对其中的每个元素应用一个索引感知的单元操作。不幸的是,我看到的所有像这样做的便捷方式——比如结合函数——似乎都忽略了每个元素的索引。对于索引遍历中的每个元素(及其索引),是否有一种很好的方法来运行操作?有效吗?我想,您可以使用它作为索引数据结构的someIndexedTraversal操作的IMAP 如果您只需要执行一个操作,那么Control.Lens.Fold中也有一个 我没有太多使用索引遍历,但我发现API有点混乱。大多数时候,我使用的镜头要么是^.要么是^,但对于

我有一个(来自包),我想对其中的每个元素应用一个索引感知的单元操作。不幸的是,我看到的所有像这样做的便捷方式——比如结合函数——似乎都忽略了每个元素的索引。对于索引遍历中的每个元素(及其索引),是否有一种很好的方法来运行操作?

有效吗?我想,您可以使用它作为索引数据结构的someIndexedTraversal操作的
IMAP

如果您只需要执行一个操作,那么
Control.Lens.Fold中也有一个


我没有太多使用索引遍历,但我发现API有点混乱。大多数时候,我使用的镜头要么是
^.
要么是
^,但对于索引遍历,通常的方法似乎是使用一个特殊的索引感知函数,这似乎有点不同。

您也可以使用Control.Lens.indexed.withIndex获得(index,value)元组的遍历,但有一些限制。但我认为,在大多数情况下,使用imapMOf和其他i组合器更方便。