[lint program after lambda lifting, don't re-annotate rules and ensure annotate handles recursive rules properly
John Meacham <john@repetae.net>**20060315030234] hunk ./E/Annotate.hs 65
+            as <- mapM procRules as
hunk ./Main.hs 434
-        let Identity es'' = annotateDs initMap (idann (hoRules ho) (hoProps ho) ) letann lamann es'
-        es' <- return [ (y,floatInward rules z) |  (y,z) <- es'' ]
+        let Identity es'' = annotateDs initMap (idann mempty (hoProps ho) ) letann lamann es'
+        es' <- return [ (y,floatInward undefined z) |  (y,z) <- es'' ]
hunk ./Main.hs 455
-    prog <- return $ runIdentity $ annotateProgram mempty (idann rules (hoProps ho) ) letann lamann prog
+    prog <- return $ runIdentity $ annotateProgram mempty (idann mempty (hoProps ho) ) letann lamann prog
hunk ./Main.hs 480
+    -- run optimization again with no rules enabled
hunk ./Main.hs 488
-    -- run optimization again with no rules enabled
hunk ./Main.hs 489
-
hunk ./Main.hs 491
-    let ds = progCombinators prog in do
-        putStrLn "Supercombinators"
-        mapM_ (\ (t,ts,e) -> putStrLn $  (showTVr t) ++ " \\" ++ concat [ "(" ++ show  (tvrInfo t) ++ ")" | t <- ts, sortStarLike (getType t) ]) ds
+    prog <- if null $ programDs prog then return prog else do
+        ne <- (return . barendregt) (programE prog)
+        return $ programSetE ne prog
hunk ./Main.hs 495
+    -- perform lambda lifting
hunk ./Main.hs 497
+    lintCheckProgram prog
hunk ./Main.hs 500
+    lintCheckProgram prog
hunk ./Main.hs 502
+    -- final optimization pass to clean up lambda lifting droppings
hunk ./Main.hs 509
-        e' <- doopt (mangle' Nothing dataTable) False finalStats "SuperSimplify" cm e
+        e' <- doopt (mangle' Nothing dataTable) False finalStats ("SuperSimplify: " ++ pprint t)  cm e