[add store-eval optimization
John Meacham <john@repetae.net>**20060125053557] hunk ./Grin/Simplify.hs 160
+doEval n@(NodeC t xs) typ
+    | tagIsWHNF t = Return n
+    | tagIsSuspFunction t = App (tagFlipFunction t) xs typ
+doEval n typ = error $ show ("doEval", n,typ)
+
+
hunk ./Grin/Simplify.hs 231
+    f (Store t@NodeC {} :>>= v :-> App fa [v'] typ :>>= lr) | fa == funcEval, v == v' = do
+        mtick "Optimize.optimize.store-eval"
+        f (Store t :>>= v :-> doEval t typ :>>= lr)
+    f (Store t@NodeC {} :>>= v :-> App fa [v'] typ) | fa == funcEval, v == v' = do
+        mtick "Optimize.optimize.store-eval"
+        f (Store t :>>= v :-> doEval t typ)
+    f (Update v t@NodeC {} :>>= Tup [] :-> App fa [v'] typ :>>= lr) | fa == funcEval, v == v' = do
+        mtick "Optimize.optimize.update-eval"
+        f (Update v t :>>= Tup [] :-> doEval t typ :>>= lr)
+    f (Update v t@NodeC {} :>>= Tup [] :-> App fa [v'] typ) | fa == funcEval, v == v' = do
+        mtick "Optimize.optimize.update-eval"
+        f (Update v t :>>= Tup [] :-> doEval t typ)