module Extra.Either where import Data.Either (partitionEithers, rights) isRight (Right _) = True isRight (Left _) = False isLeft = not . isRight -- |Turn a list of eithers into an either of lists concatEithers :: [Either a b] -> Either [a] [b] concatEithers xs = case partitionEithers xs of ([], rs) -> Right rs (ls, _) -> Left ls {-# DEPRECATED rightOnly "Use rights" #-} rightOnly = rights {-# DEPRECATED eitherFromList "Use concatEithers" #-} eitherFromList = concatEithers