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

时间:2013-10-30 23:39:07

标签: haskell lens

我有一个IndexedTraversal(来自Control.Lens包),我想对其中的每个元素应用一个索引感知的monadic动作。不幸的是,我看到做这样的事情的所有方便方法 - 例如^!结合act函数---似乎忽略了每个元素的索引。有没有一种很好的方法可以在索引遍历中为每个元素(及其索引)运行一个动作?

1 个答案:

答案 0 :(得分:1)

imapMOf有效吗?我认为你会将其用作imapMOf someIndexedTraversal actionWithIndex dataStructure

如果您只是需要执行操作,Control.Lens.Fold中还有imapMOf_

我没有多少使用索引遍历,但我发现API有点令人困惑。大多数时候我使用带有^.^!的镜头,但对于索引遍历,通常的方法是使用一种特殊的索引感知功能,这看起来有点不同。