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