[keep track of non-normal calls in grin let constructs
John Meacham <john@repetae.net>**20070522051539] hunk ./Grin/Grin.hs 179
+                  expNonNormal :: Set.Set Atom,                           -- ^ cache, a superset of functions called in non-tail call position.
hunk ./Grin/Noodle.hs 161
+    expNonNormal = undefined,
hunk ./Grin/Noodle.hs 166
-updateLetProps lt@Let { expBody = body, expDefs = defs } = lt { expFuncCalls = (tail Set.\\ myDefs, nonTail Set.\\ myDefs), expIsNormal = not isNotNormal } where
+updateLetProps lt@Let { expBody = body, expDefs = defs } = lt { expFuncCalls = (tail Set.\\ myDefs, nonTail Set.\\ myDefs), expNonNormal = notNormal, expIsNormal = Set.null notNormal } where
hunk ./Grin/Noodle.hs 168
-    isNotNormal = any ((`Set.member` nonTail) . funcDefName) defs
+    notNormal =  nonTail `Set.intersection` (Set.fromList $ map funcDefName defs)