[make sure iterations only improve signatures.
John Meacham <john@repetae.net>**20060719060941] hunk ./E/Demand.hs 9
-    lazySig,
-    lazy,
-    lazyType
+    lazy
hunk ./E/Demand.hs 136
-    lub (env :=> ts) (env' :=> ts') = (env `lub` env') :=> zipWith lub ts ts'
-    glb (env :=> ts) (env' :=> ts') = (env `glb` env') :=> zipWith glb ts ts'
+    lub (env :=> ts) (env' :=> ts') | length ts < length ts' = (env `lub` env') :=> zipWith lub (ts ++ repeat lazy) ts'
+                                    | otherwise = (env `lub` env') :=> zipWith lub ts (ts' ++ repeat lazy)
+    glb (env :=> ts) (env' :=> ts') | length ts < length ts' = (env `glb` env') :=> zipWith glb (ts ++ repeat lazy) ts'
+                                    | otherwise = (env `glb` env') :=> zipWith glb ts (ts' ++ repeat lazy)
hunk ./E/Demand.hs 256
+extendSig (DemandSignature n1 t1) (DemandSignature n2 t2)  = DemandSignature (max n1 n2) (glb t1 t2)
hunk ./E/Demand.hs 404
-            g (ch || (sig' /= sig)) rs (((t,ne),sig'):fs)
+            let sig'' = sig `extendSig` sig'
+            g (ch || (sig'' /= sig)) rs (((t,ne),sig''):fs)