ЖК
findA :: forall a f. (Alternative f) => (a -> f Bool) -> [a] -> f (Maybe a)
findA f = fmap asum . h boolToMaybe . g
where
g :: [a] -> [f (a,Bool)]
g = zipWith (liftA2 (,)) . fmap pure <*> fmap f
h :: (Bool -> a -> Maybe a) -> [f (a,Bool)] -> f [Maybe a]
h = traverse . fmap . uncurry . flip