[perform eta expansion early and iterate it with simplification
John Meacham <john@repetae.net>**20060211182514] hunk ./E/Eta.hs 1
-module E.Eta(etaExpand) where
+module E.Eta(etaExpand,etaExpandE) where
hunk ./E/Eta.hs 38
+{-# NOINLINE etaExpandDs #-}
+etaExpandDs :: MonadStats m => DataTable -> [(TVr,E)] -> m [(TVr,E)]
+etaExpandDs dataTable ds = do
+    let Identity ds' = annotateDs mempty (const return) letann lamann ds
+    sequence [ do e <- etaExpandE dataTable e; return (t,e) | (t,e) <- ds' ]
+
hunk ./E/Eta.hs 53
+        e <- ee e
hunk ./Main.hs 214
-
+    prog <- return $ programPruneUnreachable prog
hunk ./Main.hs 226
-            let (stat, e') = SS.simplifyE sopt e
+            let (e',stat') = Stats.runStatM $ etaExpandE (progDataTable prog) e
+            let (stat, e'') = SS.simplifyE sopt e'
hunk ./Main.hs 229
-            return e'
+            Stats.tickStat stats stat'
+            return e''
hunk ./Main.hs 233
+            lc <- doopt mangle False stats "Float Inward..." (\stats x -> return (floatInward allRules x)) lc