From mantoniotti at common-lisp.net Mon May 21 12:29:24 2007 From: mantoniotti at common-lisp.net (mantoniotti) Date: Mon, 21 May 2007 08:29:24 -0400 (EDT) Subject: [cl-unification-cvs] CVS cl-unification Message-ID: <20070521122924.3D8E47208C@common-lisp.net> Update of /project/cl-unification/cvsroot/cl-unification In directory clnet:/tmp/cvs-serv30753 Modified Files: unification.system Log Message: Added file 'apply-substitition.lisp' with a few new functions that are a start for the variable substitition operation. New fixes to the MATCH and MATCH-CASE macros. They should now work as advertised. Minor changes to other files: added exports to package file, fixed .system and .asd files. --- /project/cl-unification/cvsroot/cl-unification/unification.system 2004/11/17 22:19:55 1.1.1.1 +++ /project/cl-unification/cvsroot/cl-unification/unification.system 2007/05/21 12:29:24 1.2 @@ -7,6 +7,7 @@ "lambda-list-parsing" "templates-hierarchy" "unifier" - "match-block")) + "match-block" + "apply-substitution")) ;;; end of file -- unification.system -- From mantoniotti at common-lisp.net Mon May 21 12:33:05 2007 From: mantoniotti at common-lisp.net (mantoniotti) Date: Mon, 21 May 2007 08:33:05 -0400 (EDT) Subject: [cl-unification-cvs] CVS cl-unification Message-ID: <20070521123305.EE3C27208E@common-lisp.net> Update of /project/cl-unification/cvsroot/cl-unification In directory clnet:/tmp/cvs-serv31810 Added Files: apply-substitution.lisp Log Message: See previous message. --- /project/cl-unification/cvsroot/cl-unification/apply-substitution.lisp 2007/05/21 12:33:05 NONE +++ /project/cl-unification/cvsroot/cl-unification/apply-substitution.lisp 2007/05/21 12:33:05 1.1 ;;; -*- Mode: Lisp -*- ;;; substitutions.lisp ;;; General CL structures unifier. ;;; Substitution definitions. (in-package "CL.EXT.DACF.UNIFICATION") ; DACF = Data And Control Flow. ;;;--------------------------------------------------------------------------- ;;; Substitution application. (defgeneric apply-substitution (substitution item)) (defmethod apply-substitution ((substitution environment) (s symbol)) (cond ((variable-any-p s) s) ((variablep s) (multiple-value-bind (val foundp) (find-variable-value s substitution) (cond (foundp val) (t (warn "~S is a free variable in the current environment." s) s)))) (t s))) (defmethod apply-substitution ((substitution environment) (l cons)) (cons (apply-substitution substitution (first l)) (apply-substitution substitution (rest l)))) (defmethod apply-substitution ((substitution environment) (l null)) '()) (export '(apply-substitution)) (defun ground-term (term &optional (substitution (make-empty-environment))) (apply-substitution substitution term)) ;;; end of file -- apply-substitutions.lisp -- From mantoniotti at common-lisp.net Mon May 21 12:33:07 2007 From: mantoniotti at common-lisp.net (mantoniotti) Date: Mon, 21 May 2007 08:33:07 -0400 (EDT) Subject: [cl-unification-cvs] CVS cl-unification Message-ID: <20070521123307.83AFC74308@common-lisp.net> Update of /project/cl-unification/cvsroot/cl-unification In directory clnet:/tmp/cvs-serv31824 Modified Files: match-block.lisp Log Message: See previous message. --- /project/cl-unification/cvsroot/cl-unification/match-block.lisp 2005/10/25 19:08:15 1.6 +++ /project/cl-unification/cvsroot/cl-unification/match-block.lisp 2007/05/21 12:33:07 1.7 @@ -10,7 +10,7 @@ (defmacro match ((template object &key - (substitution (make-empty-environment)) + (substitution '(make-empty-environment)) (errorp t) (error-value nil)) &body forms) @@ -39,7 +39,7 @@ ) `(block nil (handler-case - (let* ((,env-var (unify ',template ,object ,substitution)) + (let* ((,env-var (unify ,template ,object ,substitution)) ,@(generate-var-bindings) ) (declare (ignorable ,@(mapcar #'first (generate-var-bindings)))) @@ -49,7 +49,7 @@ (unification-failure (uf) (if ,errorp - (signal uf) + (error uf) ,error-value)) ))))) @@ -155,7 +155,7 @@
and are regular Common Lisp forms.