[make annotation annotate rule binding variables
John Meacham <john@repetae.net>**20060225090145] hunk ./E/Annotate.hs 124
-
+    mrule r = do
+        let g tvr = do
+            nfo <- lift $ idann (tvrIdent tvr) (tvrInfo tvr)
+            return (tvr { tvrInfo = nfo },Map.insert (tvrIdent tvr) (Just $ EVar tvr))
+        bs <- mapM g $ ruleBinds r
+        local (mconcat $ snds bs) $ do
+            args <- mapM f (ruleArgs r)
+            body <- f (ruleBody r)
+            return r { ruleBinds = fsts bs, ruleBody = body, ruleArgs = args }
hunk ./E/Annotate.hs 136
-            r' <- mapABodiesArgs f r
+            r' <- mapRules mrule r
hunk ./E/Rules.hs 13
+    mapRules,
hunk ./E/Rules.hs 181
+mapRules :: Monad m => (Rule -> m Rule) -> ARules -> m ARules
+mapRules f (ARules rules) = do
+    rs <- mapM f rules
+    return $ arules rs
+