Remove unnecessary let
authorJoachim Breitner <mail@joachim-breitner.de>
Wed, 12 Nov 2008 11:34:18 +0000 (11:34 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Wed, 12 Nov 2008 11:34:18 +0000 (11:34 +0000)
Expr.hs

diff --git a/Expr.hs b/Expr.hs
index 8ad7a58..5ecfa48 100644 (file)
--- a/Expr.hs
+++ b/Expr.hs
@@ -91,11 +91,13 @@ unpackPair v1 v2 te be | Just subst1 <- findReplacer v1 be
                        , Just subst2 <- findReplacer v2 be
                       = subst1. subst2 $ (pair v1 v2 `equal` te) `aand` be
 
+-- | Don’t unpack pair if vars are not used
+unpackPair v1 v2 te be | not (v1 `occursIn` be || v2 `occursIn` be)
+                       = be
 -- | If the whole tuple is a function, we can replace this
 --   by a comparison
 unpackPair v1 v2 te be | Just subst <- findReplacer (pair v1 v2) be
                       = subst $ (pair v1 v2 `equal` te) `aand` be
-
 -- | Nothing to optimize
 unpackPair v1 v2 te be = UnpackPair v1 v2 te be