[cl-unification-devel] Bugreport
norman werner
norman.werner at web.de
Wed Aug 24 21:38:50 UTC 2005
Hello
(cl.ext.dacf.unification:unify #T(list 3 4) '(3 ))
will result in an error.
I don't really understand the following code but i think the problem is
in "(unify (subseq a 0 (list-length vars)) vars env))".
I don't know how to fix this right.
A temporary solution could be to do something like
(when (< (length a) (length vars))
(error 'unification-failurse))
Greetings
Norman
(defmethod unify ((a list) (b sequence-template) &optional (env (make-empty-environment)))
(let ((template-lambda-list (sequence-template-lambda-list b))
(ll (list-length a))
)
(multiple-value-bind (vars optionals keys rest)
(parse-extended-ordinary-lambda-list template-lambda-list
:ordinary-variable-test #'valid-template-p
:optional-variable-test #'valid-template-p
:key-variable-test #'valid-template-p
:rest-variable-test #'valid-template-p)
(let* ((n-vars (list-length vars))
(n-optionals (list-length optionals))
(env (unify (subseq a 0 (list-length vars)) vars env)))
(when (and optionals (>= ll (+ n-vars n-optionals)))
(setf env (unify (subseq a n-vars (+ n-vars n-optionals)) optionals env)))
(when (and rest (>= ll (+ n-vars n-optionals)))
(setf env (unify (subseq a (+ n-vars n-optionals)) (first rest) env)))
(when keys (warn "Sorry mathcing of keywords ~S not yet implemented." keys))
env))))
_________________________________________________________________________
Mit der Gruppen-SMS von WEB.DE FreeMail können Sie eine SMS an alle
Freunde gleichzeitig schicken: http://freemail.web.de/features/?mc=021179
More information about the cl-unification-devel
mailing list