[add ability to map inside ARules, add more freeVars instances
John Meacham <john@repetae.net>**20051002012147] hunk ./E/Rules.hs 12
+    mapABodies,
hunk ./E/Rules.hs 46
---    ruleFvs :: Set.Set Int,
hunk ./E/Rules.hs 61
---    ruleFvs = error "ruleFvs undefined",
hunk ./E/Rules.hs 108
+instance FreeVars Rule (Set.Set Id) where
+    freeVars rule = freeVars (ruleBody rule) Set.\\ freeVars (ruleArgs rule)
+
+instance FreeVars Rule [Id] where
+    freeVars rule = Set.toList $ freeVars rule
+
hunk ./E/Rules.hs 134
+mapABodies :: Monad m => (E -> m E) -> ARules -> m ARules
+mapABodies g (ARules rs) = do
+    let f rule = do
+            b <- g (ruleBody rule)
+            return rule { ruleBody = b }
+    rs' <- mapM f rs
+    return $ ARules $ rs'