[clean up created strictness info some, be smarter about lazifying demands
John Meacham <john@repetae.net>**20060718233330] hunk ./E/Demand.hs 106
-sp xs = S (Product xs) -- None
+sp xs = S (allLazy xs) -- None
hunk ./E/Demand.hs 111
+s None = S None
+s (Product xs) = sp xs
+
+
+allLazy xs | all (== lazy) xs = None
+allLazy xs = Product xs
+
hunk ./E/Demand.hs 119
-lp xs = L (Product (map f xs)) where
+lp xs = L (allLazy (map f xs)) where
hunk ./E/Demand.hs 157
+    lub (L x) Absent = l x
+    lub Absent (L x) = l x
hunk ./E/Demand.hs 162
-    lub (S x) (S y) = S (comb lub x y)
+    lub (S x) (S y) = s (comb lub x y)
hunk ./E/Demand.hs 169
-    lub (S x) (Error y) = S (comb lub x y)
-    lub (Error x) (S y) = S (comb lub x y)
+    lub (S x) (Error y) = s (comb lub x y)
+    lub (Error x) (S y) = s (comb lub x y)
hunk ./E/Demand.hs 183
-    glb (S x) (S y) = S (comb glb x y)
+    glb (S x) (S y) = s (comb glb x y)
hunk ./E/Demand.hs 190
-    glb (S x) (L y) = S (comb glb x y)
-    glb (L x) (S y) = S (comb glb x y)
+    glb (S x) (L y) = s (comb glb x y)
+    glb (L x) (S y) = s (comb glb x y)
hunk ./E/Demand.hs 336
-lazify (DemandEnv x r) = DemandEnv (Map.map (const lazy) x) r
+lazify (DemandEnv x r) = DemandEnv (Map.map f x) Absent where
+    f (S xs) = l xs
+    f Absent = Absent
+    f (L xs) = l xs
+    f Bottom = Absent
+    f (Error xs) = l xs