Details
-
Type:
Defect
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Completed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
Description
The current unify-with-set logic will unify the first lvars it comes across, preventing backtrack unification with other lvars in the sets. See examples:
user> (run* [out]
(fresh [a b c d]
(== out [a b c d])
(== #{a b} #{c d})))
([_.0 _.1 _.0 _.1])
user> (run* [out]
(fresh [a b c d]
(== out [a b c d])
(== [a c] [7 9])
(== #{a b} #{c d})))
()
I'm still thinking of a way to efficiently handle this but wanted to post it when I came across it.
BTW, I should note that issue was noticed by Jim Duey.