目前,unify 允许使用集合作为表达式,并且只是将它们用作序列,这会导致根据项目顺序,统一操作失败或成功。
(unify #{ '[aa a] '[bb b] } ; =seq=> [bb b] [aa a]
#{ '[?a a] '[?b b] } ; =seq=> [?b b] [?a a]
) ; => {?a aa, ?b bb}
(unify #{ '[a a] '[b b] } ; =seq=> [a a] [b b]
#{ '[?a a] '[?b b] } ; =seq=> [?b b] [?a a]
) ; => nil,预期为 {?a a, ?b b}
Unify 应该处理集合(不确定算法是否容易实现那种),或者当传入集合时抛出IllegalArgumentException,而不是静默地将它们转换为序列,表现出不可预测的行为。