Control.Lens.Fold には が含まれていますfiltered。これを使用して、モナド アクションを適用する前にリストをフィルター処理できます。対応するものはないようですがfilteredM、その効果を得る方法はありますか?
明確にするために、私が持っていると言います
xs :: [ MyType ]
predM :: MyType -> MyMonad Bool
actionM :: MyType -> MyMonad ()
which returnactionMの各要素にどのように適用できますか?xspredMTrue
predM重要な制約は、 の最初の呼び出しの前に のすべての呼び出しを順序付けたいということですactionM。そのため、リストに対して 2 つのパスを作成する方法が必要です。predMandを組み合わせactionMて単一の関数にすることはできません。