[remove recursive 'seasoning' dependency in favor of having a list of 'forward variables' that might not be declared yet.
John Meacham <john@repetae.net>**20080301035555] hunk ./E/Demand.hs 425
-    return $ progCombinators_s [ combRules_s rs $ bindComb (t,e) | (t,e) <- dsOut, rs <- [ combRules c | c <- progCombinators prog, combHead c == t]] prog
+    return $ programSetDs' dsOut prog
hunk ./E/Inline.hs 126
-    g = newGraph (progCombinators prog) combIdent ( toList . (union $ progSeasoning prog) . (freeVars :: Comb -> IdSet))
+    --g = newGraph (progCombinators prog) combIdent ( toList . (union $ progSeasoning prog) . (freeVars :: Comb -> IdSet))
+    g = newGraph (progCombinators prog) combIdent ( toList . (freeVars :: Comb -> IdSet))
hunk ./E/LetFloat.hs 243
-    let imap = Map.fromList $ map (\x -> (x,top_level)) ([ tvrIdent t| (t,_) <-  programDs prog ] ++ idSetToList (progExternalNames prog))
+    let imap = Map.fromList $ map (\x -> (x,top_level)) ([ tvrIdent t| (t,_) <-  programDs prog ] ++ idSetToList (progExternalNames prog `mappend` progSeasoning prog))
hunk ./E/SSimplify.hs 285
-    so_boundVars :: IdMap Comb,         -- ^ bound variables
+    so_boundVars :: IdMap Comb,            -- ^ bound variables
+    so_forwardVars :: IdSet,               -- ^ variables that we know will exist, but might not yet.
+
hunk ./E/SSimplify.hs 289
-    so_cachedScope :: Env,
-    so_dataTable :: DataTable              -- ^ the data table
+    so_cachedScope :: Env
hunk ./E/SSimplify.hs 469
-        return [ combRules_s rs $ bindComb (t,e) | (t,e) <- dsOut, rs <- [ combRules c | c <- dsIn, combHead c == t]]
+        let lupRules t = concat [ combRules c | c <- dsIn, combIdent c == t]
+        return [ combRules_s (lupRules (tvrIdent t)) $ bindComb (t,e) | (t,e) <- dsOut ]
+
hunk ./E/SSimplify.hs 473
-    getType e = infertype (so_dataTable sopts) e
+    getType e = infertype (progDataTable prog) e
hunk ./E/SSimplify.hs 477
+        smAddBoundNamesIdSet (sfilter (`notElem` map combIdent dsIn) $ so_forwardVars sopts)
hunk ./E/SSimplify.hs 508
-        ep' <- primOpt' (so_dataTable sopts) ep
+        ep' <- primOpt' (progDataTable prog) ep
hunk ./E/SSimplify.hs 636
-            doCase e t b as@(Alt LitCons { litName = n } _:_) (Just d) | Just nsib <- numberSiblings (so_dataTable sopts) n, nsib <= length as = do
+            doCase e t b as@(Alt LitCons { litName = n } _:_) (Just d) | Just nsib <- numberSiblings (progDataTable prog) n, nsib <= length as = do
hunk ./E/SSimplify.hs 650
-                        ts <- mapM g (slotTypes (so_dataTable sopts) n te)
-                        let wtd = ELit $ updateLit (so_dataTable sopts) litCons { litName = n, litArgs = map EVar ts, litType = te }
-                        return $ Alt (updateLit (so_dataTable sopts) litCons { litName = n, litArgs = ts, litType = te }) (eLet b wtd d)
+                        ts <- mapM g (slotTypes (progDataTable prog) n te)
+                        let wtd = ELit $ updateLit (progDataTable prog) litCons { litName = n, litArgs = map EVar ts, litType = te }
+                        return $ Alt (updateLit (progDataTable prog) litCons { litName = n, litArgs = ts, litType = te }) (eLet b wtd d)
hunk ./E/SSimplify.hs 660
-                dt = (so_dataTable sopts)
+                dt = (progDataTable prog)
hunk ./E/SSimplify.hs 838
-        me <- etaExpandAp (so_dataTable sopts) v xs
+        me <- etaExpandAp (progDataTable prog) v xs
hunk ./E/SSimplify.hs 910
-        ds' <- sequence [ etaExpandDef' (so_dataTable sopts) (minArgs t) t e | (t,e) <- ds']
+        ds' <- sequence [ etaExpandDef' (progDataTable prog) (minArgs t) t e | (t,e) <- ds']
hunk ./Main.hs 301
-            SS.so_dataTable = fullDataTable
+            SS.so_forwardVars = progSeasoning prog
hunk ./Main.hs 381
-                SS.so_dataTable = progDataTable mprog
+                SS.so_forwardVars = progSeasoning mprog
hunk ./Main.hs 807
-            return $ SS.programSSimplify sopt { SS.so_dataTable = progDataTable prog } nprog
+            return $ SS.programSSimplify sopt  nprog
hunk ./Main.hs 822
-    let g =  return . SS.programSSimplify sopt { SS.so_dataTable = progDataTable prog } . SS.programPruneOccurance
+    let g =  return . SS.programSSimplify sopt . SS.programPruneOccurance
hunk ./Main.hs 935
-    let ids = progExternalNames prog `mappend` fromList (map tvrIdent $ fsts (programDs prog))
+    let ids = progExternalNames prog `mappend` fromList (map tvrIdent $ fsts (programDs prog)) `mappend` progSeasoning prog