Add a substitute helper function.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Thu, 18 Jun 2009 12:47:56 +0000 (14:47 +0200)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Thu, 18 Jun 2009 12:47:56 +0000 (14:47 +0200)
This function performs a number of substitutions on a CoreExpr, by using
the CoreSubst module.

NormalizeTools.hs

index 91e5b4526bbd272ff95b020b8a010f2040b55e4f..193af61edc717571bccfd9def970f142e7c8c7e6 100644 (file)
@@ -23,6 +23,7 @@ import qualified SrcLoc
 import qualified Type
 import qualified IdInfo
 import qualified CoreUtils
+import qualified CoreSubst
 import Outputable ( showSDoc, ppr, nest )
 
 -- Local imports
@@ -140,3 +141,9 @@ mkUnique = Trans.lift $ do
     let (us', us'') = UniqSupply.splitUniqSupply us
     putA tsUniqSupply us'
     return $ UniqSupply.uniqFromSupply us''
+
+-- Replace each of the binders given with the coresponding expressions in the
+-- given expression.
+substitute :: [(CoreBndr, CoreExpr)] -> CoreExpr -> CoreExpr
+substitute replace expr = CoreSubst.substExpr subs expr
+    where subs = foldl (\s (b, e) -> CoreSubst.extendIdSubst s b e) CoreSubst.emptySubst replace