diff options
| author | aarne <aarne@cs.chalmers.se> | 2006-02-24 15:49:14 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2006-02-24 15:49:14 +0000 |
| commit | 56a9e025d59d3c6df9f07a6304f7d1d56dfd96b2 (patch) | |
| tree | 9523402074da8950bc54a1ee6bb2a5c9967a604d /src/GF/Infra | |
| parent | e8b4d1697dc9ac8834d66ed7533a5de992803292 (diff) | |
bronzeage README ; topological sorting of abstract modules
Diffstat (limited to 'src/GF/Infra')
| -rw-r--r-- | src/GF/Infra/Modules.hs | 9 |
1 files changed, 5 insertions, 4 deletions
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] |
