If fa call is made in the cloud, then f, without a doubt, it uses some kind of monad, possibly a monad IOor monad derived from a monad IO. There are monadic versions map. Here is what you usually do as a first attempt:
f :: A -> IO B -- defined elsewhere
g :: [A] -> IO [B]
g xs = mapM f xs
-- or, in points-free style:
g = mapM f
() , g , , f . , , f .
type Error = String
f :: A -> IO (Either Error B)
g :: [A] -> IO [Either Error B]
g = mapM f
, , , , lefts rights Data.Either.
h :: [A] -> IO ([B], [Error])
h xs = do ys <- g xs
return (rights ys, lefts ys)
, Maybe B Either Error B.
Either , . Left, Right. "" "" , , Right, ( , , , Left).