module Data.TypedEncoding.Internal.Util where explainBool :: (a -> err) -> (a, Bool) -> Either err a explainBool :: (a -> err) -> (a, Bool) -> Either err a explainBool a -> err _ (a a, Bool True) = a -> Either err a forall a b. b -> Either a b Right a a explainBool a -> err f (a a, Bool False) = err -> Either err a forall a b. a -> Either a b Left (err -> Either err a) -> err -> Either err a forall a b. (a -> b) -> a -> b $ a -> err f a a -- -- | explicit mapM -- extractEither :: Traversable t => t (Either err a) -> Either err (t a) -- extractEither = sequence -- mapM id