标签: haskell lens
我有一个IndexedTraversal(来自Control.Lens包),我想对其中的每个元素应用一个索引感知的monadic动作。不幸的是,我看到做这样的事情的所有方便方法 - 例如^!结合act函数---似乎忽略了每个元素的索引。有没有一种很好的方法可以在索引遍历中为每个元素(及其索引)运行一个动作?
IndexedTraversal
Control.Lens
^!
act
答案 0 :(得分:1)
imapMOf有效吗?我认为你会将其用作imapMOf someIndexedTraversal actionWithIndex dataStructure。
imapMOf someIndexedTraversal actionWithIndex dataStructure
如果您只是需要执行操作,Control.Lens.Fold中还有imapMOf_。
Control.Lens.Fold
我没有多少使用索引遍历,但我发现API有点令人困惑。大多数时候我使用带有^.或^!的镜头,但对于索引遍历,通常的方法是使用一种特殊的索引感知功能,这看起来有点不同。
^.