[make known-case transformation work on tags
John Meacham <john@repetae.net>**20060128053246] hunk ./Grin/Simplify.hs 206
+isManifestNode (Return (Tag t)) = return [t]
hunk ./Grin/Simplify.hs 251
+isKnown Tag {} = True
hunk ./Grin/Simplify.hs 356
-        mtick $ "Optimize.optimize.known-case.{" ++ show t
+        mtick $ "Optimize.optimize.known-case-node.{" ++ show t
hunk ./Grin/Simplify.hs 365
-        mtick $ "Optimize.optimize.known-case.{" ++ show n
+        mtick $ "Optimize.optimize.known-case-lit.{" ++ show n
hunk ./Grin/Simplify.hs 370
+        return $ f as
+    knownCase (Tag t) as = do
+        mtick $ "Optimize.optimize.known-case-tag.{" ++ show t
+        let f [] =  Error "known-case: No known case" (getType (Case (Tag t) as))
+            f ((v@Var {} :-> b):_) = Return (Tag t) :>>= v :-> b
+            f ((Tag t' :-> b):_) | t == t' = b
+            f (_:as) = f as