[cl-unification-cvs] CVS cl-unification

mantoniotti mantoniotti at common-lisp.net
Mon May 21 12:33:07 UTC 2007


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 @@
 <form> and <forms> are regular Common Lisp forms.
 <template> is a unification template.
 
-The full syntax of MATCHING is
+The full syntax of MATCH-CASE is
 
   match-case <object> (&key errorp default-substitution) <clauses>
 
@@ -163,7 +163,7 @@
 present in the template are bound lexically.  Note that both variable
 names '?FOO' and 'FOO' are bound for convenience.
 
-The values returned by the MATCHING form are those of the last form in
+The values returned by the MATCH-CASE form are those of the last form in
 the first clause that satisfies the match test.
 
 If ERRORP is non-NIL then if none of the regular clauses matches, then
@@ -188,7 +188,7 @@
          )
     (labels ((generate-matchers (clauses)
 	       (if (null clauses)
-		   otherwise-clause
+		   `(progn ,@(rest otherwise-clause))
 		   (destructuring-bind (pattern &rest body)
 		       (car clauses)
 		     `(handler-case (match (,pattern ,object-var)




More information about the Cl-unification-cvs mailing list