ajp*_*ajp 3 haskell lenses haskell-lens
Control.Lens.Fold包含filtered,我可以用来在应用一些monadic动作之前过滤列表.似乎没有相应的filteredM- 但有没有办法达到这个效果?
要清楚,说我有
xs :: [ MyType ]
predM :: MyType -> MyMonad Bool
actionM :: MyType -> MyMonad ()
Run Code Online (Sandbox Code Playgroud)
我怎么能申请actionM到的每个元素xs这对于predM返回True?
一个重要的约束是我想predM在第一次调用之前对所有调用进行排序actionM- 所以我需要一种方法在列表上进行两次传递.我不能只是结合predM并actionM成一个单一的功能.
为什么不
mapM_ actionM <=< filterM predM $ toListOf YOUR_LENS_HERE YOUR_OBJECT_HERE
Run Code Online (Sandbox Code Playgroud)
要不就
mapM_ actionM <=< filterM predM $ xs
Run Code Online (Sandbox Code Playgroud)
如果你真的只需要在列表上工作