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