3
Control.Lens.Fold包含filtered
,我可以在应用一些monadic动作之前使用它来过滤列表。似乎没有相应的filteredM
- 但是有没有办法获得这种效果?我可以使用monadic操作来过滤从Control.Lens中折叠吗?
要清楚,说我有
xs :: [ MyType ]
predM :: MyType -> MyMonad Bool
actionM :: MyType -> MyMonad()
如何申请actionM
到xs
每个元素为其predM
回报True
?
一个重要的约束是我想在actionM
的第一次调用之前对predM
的所有调用进行排序 - 所以我需要一种方法在列表上进行两遍。我不能只将predM
和actionM
合并成一个函数。
好上工作,我实际上并不只是一个名单 - 我可以有过于简单化。我实际上有一个遍历,从control.lens.traversal – ajp
'toListOf :: Traversal的a - > s - > [a]'会给你列表。 – shachaf