[fix static argument transform so that it doesn't re-recurse into previously processed terms
John Meacham <john@repetae.net>**20061129010948] hunk ./E/LambdaLift.hs 43
+--
+-- this has potentially exponential behavior. beware
hunk ./E/LambdaLift.hs 66
-        --ne' = foldr ELam (ELetRec [(tvr',subst t (EVar tvr') v)]  (foldl EAp (EVar tvr') (map EVar as))) args
hunk ./E/LambdaLift.hs 68
+            ne' <- g ne'
hunk ./E/LambdaLift.hs 70
-    f _ (Right ts) = gds ts
+    f _ (Right ts) =  gds ts
hunk ./E/LambdaLift.hs 73
-    g elet@ELetRec { eDefs = ds }  = do
-        ds' <- mapM (f False) (decomposeDs ds)
-        emapE g elet { eDefs = concat ds' }
+    g elet@ELetRec { eDefs = ds } =  do
+        ds'' <- mapM (f False) (decomposeDs ds)
+        e' <- g $ eBody elet
+        return elet { eDefs = concat ds'', eBody = e' }