[preserve combinators with more transformations. add programSetDs'
John Meacham <john@repetae.net>**20080301015737] hunk ./E/CPR.hs 76
-    ans = programSetDs nds prog -- { progStats = progStats prog `mappend` stats }
+    ans = programSetDs' nds prog -- { progStats = progStats prog `mappend` stats }
hunk ./E/LetFloat.hs 275
-        dtl (t,e) = do
-            (e,fs) <- runWriterT (dofloat e)
+        dtl comb = do
+            (e,fs) <- runWriterT (dofloat $ combBody comb)
hunk ./E/LetFloat.hs 291
-            return $ (t,sm e''):fs'''
-    (cds,stats) <- runStatT (mapM dtl $ programDs prog)
-    let nprog = programSetDs (concat cds) prog
+            return $ combBody_s (sm e'') comb:map bindComb fs'''
+    (cds,stats) <- runStatT (mapM dtl $ progCombinators prog)
+    let nprog = progCombinators_s (concat cds) prog
hunk ./E/Program.hs 80
+
+programSetDs' :: [(TVr,E)] -> Program -> Program
+programSetDs' ds prog = progCombinators_s [ combRules_s rs $ bindComb (t,e) | (t,e) <- ds, rs <- [ combRules c | c <- progCombinators prog, combHead c == t]] prog
hunk ./E/WorkerWrapper.hs 141
-    ans = programSetDs nds prog { progStats = progStats prog `mappend` stats }
+    ans = programSetDs' nds prog { progStats = progStats prog `mappend` stats }