[use new program based ssimplifier interface for initial optimization pass
John Meacham <john@repetae.net>**20060411113818] hunk ./Main.hs 281
-        let cm stats e = do
-            let sopt = mempty {
+        let sopt = mempty {
hunk ./Main.hs 283
-                SS.so_rules = allRules,
hunk ./Main.hs 286
-            let (e',_) = SS.collectOccurance e
-            let (stat, e'') = SS.simplifyE sopt e'
-            wdump FD.Pass $ printCheckName fullDataTable e''
-            Stats.tickStat mstats stat
-            return e''
-        let mangle = mangle' Nothing fullDataTable
-
-        lintCheckProgram onerrNone mprog
-        mprog <- barendregtProg mprog
-        ns <- flip mapM (programDs mprog) $ \ (v,lc) -> do
-            (v,lc) <- Stats.runStatIO mstats (etaExpandDef' fullDataTable v lc)
-            lc <- doopt mangle False mstats ("SuperSimplify:" ++ pprint v) cm lc
-            return (v,lc)
-        mprog <- return $ programSetDs ns mprog
-        lintCheckProgram onerrNone mprog
+        mprog <- etaExpandProg mprog
+        mprog <- simplifyProgram sopt "SuperSimplify" False mprog
hunk ./Main.hs 290
-        mprog <- transformProgram "floatOutward" False (dump FD.Pass) floatOutward mprog
+        --mprog <- transformProgram "floatOutward" False (dump FD.Pass) floatOutward mprog
hunk ./Main.hs 292
-        ns <- flip mapM (programDs mprog) $ \ (v,lc) -> do
-            (v,lc) <- Stats.runStatIO mstats (etaExpandDef' fullDataTable v lc)
-            lc <- doopt mangle False mstats ("SuperSimplify: "  ++ pprint v) cm lc
-            lc <- mangle (return ()) False ("Barendregt: " ++ pprint v) (return . barendregt) lc
-            lc <- doopt mangle False mstats "Float Inward..." (\stats x -> return (floatInward allRules x)) lc
-            return (v,lc)
+        mprog <- simplifyProgram sopt "SuperSimplify" False mprog
+        mprog <- barendregtProg mprog
+        mprog <- transformProgram "float inward" False (dump FD.Pass) (programMapBodies (return . floatInward allRules)) mprog
+        let ns = programDs mprog
hunk ./Main.hs 299
-        ns <- flip mapM (programDs mprog) $ \ (v,lc) -> do
-            lc <- doopt mangle False mstats ("SuperSimplify:" ++ pprint v) cm lc
-            return (v,lc)
-        mprog <- return $ programSetDs ns mprog
-        lintCheckProgram onerrNone mprog
+        mprog <- simplifyProgram sopt "SuperSimplify" False mprog
hunk ./Main.hs 301
-
hunk ./Main.hs 877
+        putErrLn ("\n>>> Unaccounted for free variables: " ++ render (pprint $ Set.toList $ unaccounted))
+        printProgram prog