[add let shrinkage optimizations to grin
John Meacham <john@repetae.net>**20060815065522] hunk ./Grin/Simplify.hs 358
-
+    f lt@Let { expDefs = defs, expBody = e :>>= l :-> r } | Set.null (freeVars r `Set.intersect` (Set.fromList $ map funcDefName defs)) = do
+        mtick "Optimize.optimize.let-shrink-tail"
+        f (lt { expDefs = defs, expBody = e } :>>= l :-> r)
+    f lt@Let { expDefs = defs, expBody = e :>>= l :-> r } | Set.null (freeVars e `Set.intersect` (Set.fromList $ map funcDefName defs)) = do
+        mtick "Optimize.optimize.let-shrink-head"
+        f (e :>>= l :-> lt { expDefs = defs, expBody = r })
hunk ./Grin/Whiz.hs 85
-    g env lt@Let { expDefs = defs, expBody = Let { expDefs = defs', expBody = body } } = g env lt { expDefs = defs `mappend` defs', expBody = body }
+--    g env lt@Let { expDefs = defs, expBody = Let { expDefs = defs', expBody = body } } = g env lt { expDefs = defs `mappend` defs', expBody = body }