[cl-unification-cvs] CVS update: cl-unification/unifier.lisp
Marco Antoniotti
mantoniotti at common-lisp.net
Fri May 20 15:19:54 UTC 2005
Update of /project/cl-unification/cvsroot/cl-unification
In directory common-lisp.net:/tmp/cvs-serv20210
Modified Files:
unifier.lisp
Log Message:
Fixed two major bugs reported by Norman Werver. Unification of
strings and symbols and of numers and symbols was not recurring on
VAR-UNIFY, as required; thus
(unify '(?x ?x) '("asd" "qweert"))
and
(unify '(foo ?x baz) '(foo 42 ?x))
would succed.
The two cases are now fixed.
Date: Fri May 20 17:19:53 2005
Author: mantoniotti
Index: cl-unification/unifier.lisp
diff -u cl-unification/unifier.lisp:1.2 cl-unification/unifier.lisp:1.3
--- cl-unification/unifier.lisp:1.2 Fri Jan 28 20:30:35 2005
+++ cl-unification/unifier.lisp Fri May 20 17:19:53 2005
@@ -94,15 +94,15 @@
(defmethod unify ((a symbol) (b string) &optional (env (make-empty-environment)))
(cond ((variable-any-p a) env)
- ((variablep a) (extend-environment a b env))
+ ((variablep a) (var-unify a b env))
(t (error 'unification-failure
- :format-control "Cannot unify a symbol with a string: ~S ~S."
- :format-arguments (list a b)))))
+ :format-control "Cannot unify a symbol with a string: ~S ~S."
+ :format-arguments (list a b)))))
(defmethod unify ((b string) (a symbol) &optional (env (make-empty-environment)))
(cond ((variable-any-p a) env)
- ((variablep a) (extend-environment a b env))
+ ((variablep a) (var-unify a b env))
(t (error 'unification-failure
:format-control "Cannot unify a string with a symbol: ~S ~S."
:format-arguments (list b a)))))
@@ -121,13 +121,13 @@
(defmethod unify ((a symbol) (b t) &optional (env (make-empty-environment)))
(cond ((variable-any-p a) env)
- ((variablep a) (extend-environment a b env))
+ ((variablep a) (var-unify a b env))
(t (call-next-method))))
(defmethod unify ((b t) (a symbol) &optional (env (make-empty-environment)))
(cond ((variable-any-p a) env)
- ((variablep a) (extend-environment a b env))
+ ((variablep a) (var-unify a b env))
(t (call-next-method))))
More information about the Cl-unification-cvs
mailing list