[add findOrphanRules and mapRuleBodies
John Meacham <john@repetae.net>**20080219120255] hunk ./E/Rules.hs 17
+    mapRuleBodies,
hunk ./E/Rules.hs 20
+    findOrphanRules,
hunk ./E/Rules.hs 75
-    deriving(HasSize)
+    deriving(HasSize,IsEmpty)
hunk ./E/Rules.hs 84
+mapRuleBodies :: (E -> E) -> Rules -> Rules
+mapRuleBodies g (Rules mp) = Rules (fmap (map f) mp) where
+    f rule = rule { ruleBody = g $ ruleBody rule }
+
hunk ./E/Rules.hs 107
+findOrphanRules :: [Module] -> Rules -> Rules
+findOrphanRules ms (Rules rs) = Rules $ mapMaybeIdMap f rs where
+    f rs = let grs = filter (not . bad) rs in if List.null grs then Nothing else Just grs
+    bad r = List.null $ map Just ms `intersect` (map (\x -> getModule =<< fromId x) $ idSetToList ((S.insert (tvrIdent $ ruleHead r) $ freeVars (ruleArgs r)) S.\\ fromList (map tvrIdent $ ruleBinds r)))