don't compose lits
It forces the identities of lits to change during relabel(). I think we still have to update() the expression to track changes in the F function stack effect or we risk losing assoviations between type variables in the stack effects and type variables in the pending expression. Hrmmm.
This commit is contained in:
parent
db28989b64
commit
4321ea874b
|
|
@ -242,17 +242,13 @@ def infer(e, F=ID):
|
||||||
fi, fo = n.enter_guard(F)
|
fi, fo = n.enter_guard(F)
|
||||||
res = []
|
res = []
|
||||||
for combinator in n.stack_effects:
|
for combinator in n.stack_effects:
|
||||||
print fo
|
|
||||||
print e
|
|
||||||
new_fo, ee, _ = combinator(fo, e, {})
|
new_fo, ee, _ = combinator(fo, e, {})
|
||||||
print new_fo
|
|
||||||
print ee
|
|
||||||
ee = update(FUNCTIONS, ee) # Fix Symbols.
|
ee = update(FUNCTIONS, ee) # Fix Symbols.
|
||||||
new_F = fi, new_fo
|
new_F = fi, new_fo
|
||||||
res.extend(infer(ee, new_F))
|
res.extend(infer(ee, new_F))
|
||||||
else:
|
else:
|
||||||
lit = s9, (n, s9)
|
fi, fo = F
|
||||||
res = flatten(infer(e, Fn) for Fn in MC([F], [lit]))
|
res = infer(e, (fi, (n, fo)))
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue