module ModSysSem(mProgram) where import Modules import CheckModules import ModSysAST import NamesEntities import Relations(Rel,emptyRel) mProgram :: [Module] -> Either [[ModSysErr]] [(Rel QName Entity,Rel Name Entity)] mProgram modules | not (all null errs) = Left errs | otherwise = Right rels where rels = computeInsOuts (const emptyRel) modules errs = zipWith (chkModule expsOf) inscps modules (inscps,exps) = unzip rels expsOf m = lookup m mod_exps mod_exps = map modName modules `zip` exps