Control.Lens.Fold contains filtered
,我可以在应用一些单子操作之前使用它来过滤列表。似乎没有对应的filteredM
- 但有没有办法获得这种效果?
要清楚,说我有
xs :: [ MyType ]
predM :: MyType -> MyMonad Bool
actionM :: MyType -> MyMonad ()
我如何适用于for which返回actionM
的每个元素?xs
predM
True
一个重要的限制是我想predM
在第一次调用之前对所有调用进行排序actionM
- 所以我需要一种方法来对列表进行两次传递。我不能仅仅将predM
and组合actionM
成一个函数。