[fix unit-unit optimization, add return-update optimization
John Meacham <john@repetae.net>**20060128195428] hunk ./Grin/Simplify.hs 255
+isTup Tup {} = True
+isTup _ = False
hunk ./Grin/Simplify.hs 266
-    f (e :>>= v1 :-> Return v2 :>>= lr) | v1 == v2 = do
-        mtick "Optimize.optimize.unit-unit"
-        f (e :>>= lr)
-    f (e :>>= v1 :-> Return v2) | v1 == v2 = do
+    --f (e :>>= v1 :-> Return v2 :>>= lr) | (isTup v1 || isVar v1) && v1 == v2 = do
+    --    mtick "Optimize.optimize.unit-unit"
+    --    f (e :>>= lr)
+    f (Return t@NodeC {} :>>= v@Var {} :-> Update w v' :>>= lr) | v == v' = do
+        mtick "Optimize.optimize.return-update"
+        f (Return t :>>= v :-> Update w t :>>= lr)
+    f (Return t@NodeV {} :>>= v@Var {} :-> Update w v' :>>= lr) | v == v' = do
+        mtick "Optimize.optimize.return-update"
+        f (Return t :>>= v :-> Update w t :>>= lr)
+    f (e :>>= v1 :-> Return v2) | (isTup v1 || isVar v1) && v1 == v2 = do