[bind complex scrutinees of case expressions to variables to ensure they arn't calculated more than once.
John Meacham <john@repetae.net>**20061223050147] hunk ./E/FromHs.hs 731
-            pps <- tidyHeads b ps
+            (b',mf) <- if isEVar b   then return (b,id) else do
+                [ev] <- newVars [getType b]
+                return $ (EVar ev, eLet ev b)
+            pps <- tidyHeads b' ps
hunk ./E/FromHs.hs 739
-                    if isEVar err' || isEError err' || isJoinPoint err' then matchGroup b bs ps err' else do
+                    if isEVar err' || isEError err' || isJoinPoint err' then matchGroup b' bs ps err' else do
hunk ./E/FromHs.hs 742
-                        nm <- matchGroup b bs ps (EAp (EVar ev') unboxedUnit)
+                        nm <- matchGroup b' bs ps (EAp (EVar ev') unboxedUnit)
hunk ./E/FromHs.hs 744
-            f patternGroups err
+            liftM mf $ f patternGroups err