- Just key -> do
- sub <- queryNmcDom queryOp key
- case sub of
- Left e -> return $ Left e
- Right sub' -> mergeImport queryOp (depth - 1) $ sub' `merge` base'
+ Just keys -> foldM mergeImport1 (Right base') keys
+ where
+ mergeImport1 (Left err) _ = return $ Left err
+ mergeImport1 (Right acc) key = do
+ sub <- queryNmcDom queryOp key
+ case sub of
+ Left err -> return $ Left err
+ Right sub' -> mergeImport queryOp (depth - 1) $ sub' `merge` acc