From 56a9e025d59d3c6df9f07a6304f7d1d56dfd96b2 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 24 Feb 2006 15:49:14 +0000 Subject: bronzeage README ; topological sorting of abstract modules --- src/GF/Infra/Modules.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/GF/Infra/Modules.hs') diff --git a/src/GF/Infra/Modules.hs b/src/GF/Infra/Modules.hs index 723cf7f3d..e8f372896 100644 --- a/src/GF/Infra/Modules.hs +++ b/src/GF/Infra/Modules.hs @@ -368,15 +368,16 @@ isCompleteModule :: (Eq i) => Module i f a -> Bool isCompleteModule m = mstatus m == MSComplete && mtype m /= MTInterface --- | all abstract modules +-- | all abstract modules sorted from least to most dependent allAbstracts :: Eq i => MGrammar i f a -> [i] -allAbstracts gr = [i | (i,ModMod m) <- modules gr, mtype m == MTAbstract] +allAbstracts gr = topoSort + [(i,extends m) | (i,ModMod m) <- modules gr, mtype m == MTAbstract] -- | the last abstract in dependency order (head of list) greatestAbstract :: Eq i => MGrammar i f a -> Maybe i greatestAbstract gr = case allAbstracts gr of - [] -> Nothing - a:_ -> return a + [] -> Nothing + as -> return $ last as -- | all resource modules allResources :: MGrammar i f a -> [i] -- cgit v1.2.3