module Gargantext.Utils.Either whereimport Gargantext.Preludeimport Data.Array (cons, uncons)import Data.Either (Either(..))import Data.Map as Mapimport Data.Maybe (Maybe(..))import Data.Tuple (Tuple(..))eitherList :: forall l r. Array (Either l r) -> Either l (Array r)eitherList xs = case uncons xs of Nothing -> Right [] Just { head: Left x } -> Left x Just { head: Right x, tail } -> case eitherList tail of Left err -> Left err Right ds -> Right (cons x ds)eitherMap :: forall k l r. Ord k => Map.Map k (Either l r) -> Either l (Map.Map k r)eitherMap m = case eitherList (helper <$> Map.toUnfoldable m) of Left err -> Left err Right lst -> Right $ Map.fromFoldable lst where helper (Tuple _ (Left err)) = Left err helper (Tuple k (Right v)) = Right (Tuple k v)