AV
filtered :: (Choice p, Applicative f) => (a -> Bool) -> Optic' p f a a
filtered p = dimap (\x -> if p x then Right x else Left x) (either pure id) . right'
fi
lteredP p = dimap (\x -> case x ^? p of Just x -> Right x else Left x) (either pure id) . right'или какой matching?