Tue Mar 13 15:29:16 UTC 2012 mantoniotti@common-lisp.net * Added TIMESTAMP. Tue Mar 13 15:28:28 UTC 2012 mantoniotti@common-lisp.net * Copyright updated. Tue Mar 13 15:28:15 UTC 2012 mantoniotti@common-lisp.net * Copyright updated. Thu Jun 16 00:10:47 UTC 2011 mantoniotti@common-lisp.net * Added "CL-UNIFICATION" as package nickname to match the .asd and .system specs. Sat Apr 2 04:39:32 UTC 2011 rbrown@common-lisp.net * Use *unify-string-case-sensitive-p* consistently. Change the documentation. Sat Apr 2 04:19:09 UTC 2011 rbrown@common-lisp.net * match-block.lisp: Use &body in match-case and matchf-case so code that uses them is correctly indented by editors. Sat Apr 2 04:16:51 UTC 2011 mantoniotti@common-lisp.net * Copyright updated. Sat Apr 2 04:11:54 UTC 2011 mantoniotti@common-lisp.net * Updated copyright info and a News. Sat Apr 2 04:09:17 UTC 2011 mantoniotti@common-lisp.net * ChangeLog updated. Sat Apr 2 04:08:13 UTC 2011 mantoniotti@common-lisp.net * Remove Thumbs.db and friends Sat Apr 2 04:05:30 UTC 2011 mantoniotti@common-lisp.net * Exported a few more symbols. Sat Apr 2 04:05:18 UTC 2011 mantoniotti@common-lisp.net * Minor changes (added COPYING information and other minutiae). Sat Apr 2 04:01:24 UTC 2011 mantoniotti@common-lisp.net * Changed some environment functions and improved the DUMP-* ones. Sat Apr 2 03:51:38 UTC 2011 mantoniotti@common-lisp.net * Acknowledgements updated. Sat Apr 2 03:50:19 UTC 2011 rbrown@common-lisp.net * Delete trailing whitespace. In lambda-list-parsing.lisp this fixes a bug with ~@ format directives. Sat Apr 2 02:51:32 UTC 2011 rbrown@common-lisp.net * unifier.lisp: Allow vectors to unify with sequence templates. test/unification-tests.lisp: new test to verify the change Sat Apr 2 02:49:30 UTC 2011 rbrown@common-lisp.net * Add entry for cl-unification-test.asd. Sat Apr 2 02:47:50 UTC 2011 rbrown@common-lisp.net * Add cl-unification-test.asd Make (asdf:test-system 'cl-unification) work. Sat Apr 2 02:37:58 UTC 2011 rbrown@common-lisp.net * Make sure that classes referenced in #T forms are defined before the forms are read. This fixes compilation of file unification-tests.lisp. Tue Mar 29 23:22:33 UTC 2011 mantoniotti@common-lisp.net * Copyright dates updated. Tue Mar 29 23:20:53 UTC 2011 mantoniotti@common-lisp.net * ChangeLog updated. Tue Mar 29 22:59:37 UTC 2011 mantoniotti@common-lisp.net * Added debugging functions DUMP-FRAME and DUMP-ENVIRONMENT. Tue Jun 15 03:21:37 UTC 2010 pix@kepibu.org * Pull variable binding out of %match-expander I'd like to tell you this is part of a plan to simplify %match-expander, but in all honesty, the only reason I'm doing it is because I found myself thinking with-unification-variables would be a handy macro while working on a private extension to cl-unification, and I didn't want to duplicate the code. Sun Feb 7 08:42:39 UTC 2010 pix@kepibu.org * Marginally more straightforward? Sun Feb 7 07:40:23 UTC 2010 pix@kepibu.org * Declare ftype of find-variable-value and v? properly Sun Feb 7 07:33:38 UTC 2010 pix@kepibu.org * Fix export of lib-dependent symbols Sun Feb 7 07:30:06 UTC 2010 pix@kepibu.org * Specialization on the second arg of print-object is not allowed Fri Feb 5 09:30:48 UTC 2010 pix@kepibu.org * Whoops. Typo in test. Fri Feb 5 09:04:00 UTC 2010 pix@kepibu.org * Create a named-readtable if the named-readtables library is also loaded Because (in-readtable ...) is a beautiful thing. Fri Feb 5 09:02:42 UTC 2010 pix@kepibu.org * Add (enable-template-reader), so it is easy to turn on the template reader Useful when there are conflicts on #T, such as with closure-html. Fri Feb 5 08:58:50 UTC 2010 pix@kepibu.org * Export new MATCH* macros. Fri Feb 5 03:21:40 UTC 2010 pix@kepibu.org * Unified docstrings. Thu Feb 4 07:32:18 UTC 2010 pix@kepibu.org * Merge all MATCH* macros into a single, unified expansion function And, because it's now trivial, add MATCH-COND, MATCHF-COND, MATCH-ECASE, and MATCHF-ECASE. Still to do: Merge documentation of functions so there's less copy-pasta in the documentation strings. Thu Feb 4 07:31:47 UTC 2010 pix@kepibu.org * Duplicate nested match-case tests for matchf-case. Thu Feb 4 07:20:04 UTC 2010 pix@kepibu.org * Make "inner-error" and "outer-error" proper conditions. Wed Feb 3 09:56:58 UTC 2010 pix@kepibu.org * Make condition printable, for easier manually stepping through tests. Wed Feb 3 09:53:59 UTC 2010 pix@kepibu.org * These are no longer failures. Woo! Mon Jan 25 07:38:54 UTC 2010 pix@kepibu.org * Moar tests! Mon Jan 25 07:38:27 UTC 2010 pix@kepibu.org * Consider unexpected errors as test failures ...why is this not default behavior? Mon Jan 25 07:03:27 UTC 2010 pix@kepibu.org * (cond (a b) (c d) nil) isn't really valid Sat Jan 23 00:53:33 UTC 2010 pix@kepibu.org * How did .clbuild-skip-update even get /in/ the repo? Sat Jan 23 00:31:24 UTC 2010 pix@kepibu.org * Make tests file loadable Sat Jan 23 00:19:32 UTC 2010 pix@kepibu.org * DTRT when asdf-system-connections is available Thu Jan 21 01:56:47 UTC 2010 pix@kepibu.org * Rather than a new UNIFY** function, make UNIFY* work that way Let errors which are not UNIFICATION-FAILUREs find their way out of UNIFY*. Wed Jan 20 08:28:50 UTC 2010 pix@kepibu.org * Can't IN-PACKAGE without a previous DEFPACKAGE. Wed Jan 20 08:27:09 UTC 2010 pix@kepibu.org * Handle :case-sensitive properly If the first clause doesn't match due to mismatched case, it would roll down to the second clause, causing case-differing strings to erroneously match. By checking for case again, we can avoid this. Note, however, that this does not fix the similar but unrelated inconsistent usage of *unify-string-case-sensitive-p* and *unify-string-case-insensitive-p* (the former being used in the code and the latter appearing in documentation). That bug will remain until the canonical form is decided upon. Wed Jan 20 08:09:59 UTC 2010 pix@kepibu.org * Fix typo (connot -> cannot) Fri Jan 15 08:55:05 UTC 2010 pix@kepibu.org * Redefine MATCH-CASE in terms of MATCHING This both greatly simplifies the MATCH-CASE macro as well as its expansion. HOWEVER, this version is *NOT* 100% compatible with the previous version. Specifically, UNIFICATION-FAILUREs signalled from within clause-forms will /not/ cause the next unification clause to be attempted, but will instead propogate outward as the -case name suggests they should. That is, (ignore-errors (match-case ("foo") ("foo" (error 'unification-failure ...)) (t :default))) => :default ;; before patch => nil, # ;; after patch Fri Jan 15 08:49:26 UTC 2010 pix@kepibu.org * Only use one variable to store the unification environment in MATCHING Because of the way MATCHING expands, and what UNIFY* returns, each (setf #:env (unify* ...)) call will do one of two things: it will set #:env to NIL or it will set #:env to an ENVIRONMENT structure. If #:env is set to NIL--the same value it entered the (setf) with!--the COND will continue on to the next clause. If #:env is set to an ENVIRONMENT structure, none of the remaining (setf) clauses will be evaluated. Thus, because the variable will only ever be set to a non-nil value once, this should be perfectly safe. Fri Jan 15 07:59:02 UTC 2010 pix@kepibu.org * Make MATCHING agree with MATCH[F][-CASE] about the conditions of failure Rather than skipping to the next clause on any error, UNIFICATION-FAILUREs--and /only/ UNIFICATION-FAILUREs--skip to the next clause. Fri Jan 15 07:48:53 UTC 2010 pix@kepibu.org * Use &body instead of &rest for (arguably) prettier auto-indentation Tue Jan 12 09:20:28 UTC 2010 pix@kepibu.org * Fix (matching (otherwise ...)) (matching (otherwise ...)) expands into (cond (otherwise ...)), which generates an unbound-variable error when executed, because COND does not special-case OTHERWISE as CASE does. Tue Jan 12 09:08:23 UTC 2010 pix@kepibu.org * Extract the bits that wrap forms with bindings for template variables In some cases, this patch swaps the order of execution of %TEMPLATE-FOR-MATCH and COLLECT-TEMPLATE-VARS. I'm pretty sure this doesn't have any noticable effect, but thorough testing is probably wise. Tue Jan 12 08:37:44 UTC 2010 pix@kepibu.org * Use (unify* ...) rather than (ignore-errors (unify ...)) Same thing, so might as well use the convenience function. Tue Jan 12 08:03:54 UTC 2010 pix@kepibu.org * Extract template handling of MATCH[ING] into %TEMPLATE-FOR-MATCH Thu Dec 17 17:02:42 UTC 2009 mantoniotti * ChangeLog updated. Thu Dec 17 16:57:45 UTC 2009 mantoniotti * Patched to use Cl-PPCRE:SCAN-TO-STRINGS (thanks to Pixel // pinterface [a] gmail dot com). Thu Dec 17 16:44:46 UTC 2009 mantoniotti * Minor cosmetic changes. Thu Dec 17 16:43:51 UTC 2009 mantoniotti * Exported MATCHF-CASE. Thu Dec 17 16:43:12 UTC 2009 mantoniotti * Fixed a couple of problems with some accessors in the NUMBER, Fixed a couple of problems with some accessors in the NUMBER, STRUCTURE-OBJECT and STANDARD-OBJECT templates. Thu Dec 17 16:41:38 UTC 2009 mantoniotti * Added MATCHF* macros. Fri Apr 17 22:44:17 UTC 2009 mantoniotti * ChangeLog updated. Fri Apr 17 22:42:46 UTC 2009 mantoniotti * System definitions files (.asd and .system) modified in order to make System definitions files (.asd and .system) modified in order to make dependency form CL-PPCRE optional. Fri Apr 17 22:40:29 UTC 2009 mantoniotti * Removed REQUIRE of CL-PPCRE. Too brittle. Fri Apr 17 07:53:58 UTC 2009 mantoniotti * Added a few exports and changed the actual package name (i.e., I put Added a few exports and changed the actual package name (i.e., I put my money where my mouth is; the "published" package name is now a nickname). Fri Apr 17 07:52:25 UTC 2009 mantoniotti * Fixed a couple of snags. APPLY-SUBSTITUTION was not applied Fixed a couple of snags. APPLY-SUBSTITUTION was not applied recursively and it was barfing on numbers. Current version is still incomplete, but it serves as a template for further development. Wed Apr 15 14:33:35 UTC 2009 mantoniotti * ChangeLog updated. Wed Apr 15 10:24:28 UTC 2009 mantoniotti * Modified Files: Modified Files: test/unification-tests.lisp Added Files: lib-dependent/cl-ppcre-template.lisp The cl-ppcre-template reuses E. Weitz's wonderful CL-PPCRE library to provide a seamless (YMMV) reuse of regular expressions within CL-UNIFICATION. Wed Apr 15 10:18:59 UTC 2009 mantoniotti * Added LAMBDA-TEMPLATE. Wed Apr 15 10:17:48 UTC 2009 mantoniotti * Added some functionality to extract all variables and/or all values Added some functionality to extract all variables and/or all values from an environment or a frame. Wed Apr 15 10:16:24 UTC 2009 mantoniotti * Added MATCHF (whose name may change) to simplify the Added MATCHF (whose name may change) to simplify the 'destructuring-bind'-like syntax and behavior of the matching facilities. Wed Apr 15 10:14:59 UTC 2009 mantoniotti * Dates updated. Wed Apr 15 10:14:24 UTC 2009 mantoniotti * Major API change to 'unify'. It now accepts keywords. Old code Major API change to 'unify'. It now accepts keywords. Old code shouls not be affected, but new code is now more flexible. Look the the STRING and (new) CHARACTER methods to see how this change is affecting the code. Wed Apr 15 10:12:22 UTC 2009 mantoniotti * Some 'diff' unfathomable change happened. Wed Apr 15 10:10:25 UTC 2009 mantoniotti * Added exports of a few symbols. Wed Apr 15 10:06:40 UTC 2009 mantoniotti * Fixed a few snags and added "lib-dependent" module. Wed Apr 15 10:05:58 UTC 2009 mantoniotti * Added some functionality and comments. Sun Jul 13 13:36:42 UTC 2008 mantoniotti tagged rev-1_0-cleaned-up Sun Jul 13 13:36:42 UTC 2008 mantoniotti * Changelog updated. Sun Jul 13 13:33:48 UTC 2008 mantoniotti * Added credits to a few people. Missing ones should bug the maintainer :) Sun Jul 13 13:30:28 UTC 2008 mantoniotti * Copyright dates updated. Sun Jul 13 13:28:48 UTC 2008 mantoniotti * Cleaning up. Cleaning up. Committing in . Removed Files: unification.asd unification.system Sun Jul 13 13:26:38 UTC 2008 mantoniotti * Clenaing up. Clenaing up. Committing in . Removed Files: templates-hierarchy-saved.lisp Sun Jul 13 13:20:01 UTC 2008 mantoniotti * Instructions updated. Sun Jul 13 13:17:29 UTC 2008 mantoniotti * Copyright dates updated. Sun Jul 13 13:14:56 UTC 2008 mantoniotti * Added file. Sun Jul 13 13:10:48 UTC 2008 mantoniotti * Some modification added. Exported symbols and reverted Some modification added. Exported symbols and reverted reader macro #T to construct template instances at read time. Added MAKE-LOAD-FORM method for templates which should fix problem with SBCL. Committing in . Modified Files: substitutions.lisp templates-hierarchy.lisp unification-package.lisp variables.lisp Sun Jul 13 12:51:14 UTC 2008 mantoniotti * Added explicit :source-extension to accomodate Allegro CL. Thu Jul 10 17:39:16 UTC 2008 mantoniotti * Removed EXPORT of APPLY-SUBSTITUTION as it is already in the DEFPACKAGE. Fri Nov 9 13:56:40 UTC 2007 mantoniotti * Changed the position of the disclaimer. Fri Nov 9 13:47:00 UTC 2007 mantoniotti * ChangeLog updated. Fri Nov 9 13:43:20 UTC 2007 mantoniotti * Made several changes to improve MATCH-CASE (following a note from Ivan Made several changes to improve MATCH-CASE (following a note from Ivan Boldyrev from a long time ago), MATCHING and MATCH. Else-clauses are now handled correctly (AFAICT). Single variable templates in MATCH, MATCH-CASE and MATCHING clauses do not need to be quoted. MATCHING was generating one gensym'ed variable per clause without creating an appropriate enclosing LET. This is now fixed. Fri Nov 9 13:35:55 UTC 2007 mantoniotti * Changed the top comment and added a (:copier nil) option to the Changed the top comment and added a (:copier nil) option to the ENVIRONMENT defstruct, as COPY-ENVIRONMENT is defined later in the file. Fri Nov 9 13:34:18 UTC 2007 mantoniotti * Added the new system building files with more meaningful names Added the new system building files with more meaningful names w.r.t. the name of the library. Fri Nov 9 13:30:53 UTC 2007 mantoniotti * Marked the two system building files as 'obsolete', before removing Marked the two system building files as 'obsolete', before removing them from the repository. The new files are prefixed by 'cl-'. Mon May 21 17:12:58 UTC 2007 mantoniotti * ChangeLog updated. Mon May 21 17:11:42 UTC 2007 mantoniotti * Updated copyrights dates and changed a few instructions in the Updated copyrights dates and changed a few instructions in the INSTALLATION file. Mon May 21 17:10:26 UTC 2007 mantoniotti * Updated copyrights dates. Mon May 21 16:55:57 UTC 2007 mantoniotti * ChangeLog updated. Mon May 21 12:33:05 UTC 2007 mantoniotti * See previous message. Mon May 21 12:29:24 UTC 2007 mantoniotti * Added file 'apply-substitition.lisp' with a few new functions that are 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. Wed Jul 19 21:52:34 UTC 2006 mantoniotti * Fixed two problems with the unifier machinery. Fixed two problems with the unifier machinery. The first one had to do with the matching of NIL against SYMBOL and LIST in several places: essentially, the problem is incongruencies in the results of COMPUTE-APPLICABLE-METHODS in these cases. I think I caught most of them: unification of lists and the occur-check were the obvious places where things went awry. The second problem had to do with the reader macro #T. The original code generated an object at read time, which is not such a good idea. Now the code generates a call to MAKE-TEMPLATE with is evaluated later. Incidentally, the reader macro function is now called |sharp-T-reader|, in order to placate Emacs fontification. Modified Files: templates-hierarchy.lisp unifier.lisp Wed Jul 19 20:28:49 UTC 2006 mantoniotti * Added missing export. Tue Oct 25 19:17:33 UTC 2005 mantoniotti * Fixed problem with the unification of a list with a Fixed problem with the unification of a list with a SEQUENCE-TEMPLATE. The implementation was not checking that the length of the list was compatible with the length of the required elements in the template. Apart from that, keyword matching is still unimplemented. Tue Oct 25 19:08:15 UTC 2005 mantoniotti * Fixed problem with checking the presence of T and OTHERWISE clauses in Fixed problem with checking the presence of T and OTHERWISE clauses in MATCHING. Mon Jul 25 15:15:08 UTC 2005 mantoniotti * Minor cleanup. Fri May 20 16:41:16 UTC 2005 mantoniotti * Fixed typos. Fri May 20 16:38:06 UTC 2005 mantoniotti * Fixed bug in documentation. Fri May 20 16:33:24 UTC 2005 mantoniotti * Page updated. Fri May 20 16:27:05 UTC 2005 mantoniotti * Incremental change to page. Fri May 20 16:18:33 UTC 2005 mantoniotti * Fixed a documentation bug. Fixed a documentation bug. Thanks to Norman Werner for spotting it. Fri May 20 15:47:44 UTC 2005 mantoniotti * Added link to "Mailing Lists" page. Fri May 20 15:19:53 UTC 2005 mantoniotti * Fixed two major bugs reported by Norman Werver. Unification of 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. Thu May 19 23:00:18 UTC 2005 mantoniotti * Year updated. Thu May 19 22:58:34 UTC 2005 mantoniotti * File added. Thu May 19 22:54:27 UTC 2005 mantoniotti * ChangeLog updated. Thu May 19 22:52:52 UTC 2005 mantoniotti * Updated copyright notice. Thu May 19 22:49:59 UTC 2005 mantoniotti * Changed the DISCLAIMER parts in the files, in order to clarify the licensing Changed the DISCLAIMER parts in the files, in order to clarify the licensing of the code. Wed Apr 27 21:04:59 UTC 2005 mantoniotti * Fixed factorial example. Wed Apr 27 21:04:36 UTC 2005 mantoniotti * Added IGNORABLE declaration to MATCH macro expansion. Added IGNORABLE declaration to MATCH macro expansion. This is useful in quieting various compilers. Wed Apr 27 20:54:05 UTC 2005 mantoniotti * Added acknowledgement to Peter Scott. Wed Apr 27 20:52:09 UTC 2005 mantoniotti * Fixed bug in condition signaling within MATCH-CASE. Wed Apr 27 20:44:25 UTC 2005 mantoniotti * Fixed bugs in COLLECT-TEMPLATE-VARS for NUMBER-TEMPLATEs. Fixed bugs in COLLECT-TEMPLATE-VARS for NUMBER-TEMPLATEs. If a variable was present, then the method was not returning a list. The treatment of constants like PI was also incorrect, as the numeric value was returned. Retunrning () seems the right thing to do instead. Wed Apr 27 20:41:56 UTC 2005 mantoniotti * Added MATCH-CASE macro. Slightly modified from the version provided Added MATCH-CASE macro. Slightly modified from the version provided by Peter Scott. Wed Apr 27 19:31:18 UTC 2005 mantoniotti * Added unification.asd file. Thu Apr 21 15:33:20 UTC 2005 mantoniotti * Fixed, but not completed, the page. Fri Jan 28 19:46:37 UTC 2005 mantoniotti * Added file `downloads.html'. Fri Jan 28 19:45:40 UTC 2005 mantoniotti * Minor changes to text. Fixed `download.html' link. diff -rN -u old-cl-unification-1/ACKNOWLEDGEMENTS new-cl-unification-1/ACKNOWLEDGEMENTS --- old-cl-unification-1/ACKNOWLEDGEMENTS 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/ACKNOWLEDGEMENTS 2013-07-24 22:58:24.000000000 +0000 @@ -7,6 +7,7 @@ fixes. Boldyrev, Ivan +Brown, Robert Korablin, Vladimir V. Leuner, John McManus, Russell diff -rN -u old-cl-unification-1/COPYING new-cl-unification-1/COPYING --- old-cl-unification-1/COPYING 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/COPYING 2013-07-24 22:58:24.000000000 +0000 @@ -1,4 +1,4 @@ -Copyright (c) 2004 Marco Antoniotti +Copyright (c) 2004-2012 Marco Antoniotti All rights reserved. Permission is hereby granted, without written agreement and without @@ -12,10 +12,10 @@ THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR(S), HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -THE AUTHOR(S) UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE -PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE AUTHOR(S) HAVE NO -OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -MODIFICATIONS. +THE AUTHOR(S) UNIVERSITY, COMPANY AND/OR AFFILIATION SPECIFICALLY +DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND +THE AUTHOR(S) HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, +UPDATES, ENHANCEMENTS, OR MODIFICATIONS. diff -rN -u old-cl-unification-1/ChangeLog new-cl-unification-1/ChangeLog --- old-cl-unification-1/ChangeLog 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/ChangeLog 2013-07-24 22:58:24.000000000 +0000 @@ -1,3 +1,103 @@ +2011-03-28 Robert Brown + + * match-block.lisp: Use &body in match-case and matchf-case so + code that uses them is correctly indented by editors. + +2011-02-27 author + + * .cvsignore: Updated. + + * docs/html/images/Thumbs.db, docs/html/images/Thumbs.db:encryptable: + Removed Files: + Thumbs.db Thumbs.db:encryptable + +2011-02-26 author + + * .cvsignore: Updated. + + * variables.lisp, unifier.lisp: + Minor changes (added COPYING information and other minutiae). + + * unification-package.lisp: Exported a few more symbols. + + * templates-hierarchy.lisp: + Minor changes (added COPYING information and other minutiae). + + * substitutions.lisp: + Changed some environment functions and improved the DUMP-* ones. + + * match-block.lisp, lambda-list-parsing.lisp, cl-unification.system, cl-unification.asd, cl-unification-lib.asd, apply-substitution.lisp: + Minor changes (added COPYING information and other minutiae). + + * ACKNOWLEDGEMENTS: Acknowledgements updated. + +2011-02-24 author + + * ChangeLog, apply-substitution.lisp, cl-unification.system, lambda-list-parsing.lisp, lib-dependent/cl-ppcre-template.lisp, match-block.lisp, templates-hierarchy.lisp, unifier.lisp: + Delete trailing whitespace. In lambda-list-parsing.lisp this fixes a bug + with ~@ format directives. + + * ChangeLog, test/unification-tests.lisp, unifier.lisp: + unifier.lisp: Allow vectors to unify with sequence templates. + test/unification-tests.lisp: new test to verify the change + +2011-02-24 Robert Brown + + * lambda-list-parsing.lisp: Delete trailing whitespace that turned + ~@ into a bogus format directive by converting it into + ~@ + + * unifier.lisp, apply-substitution.lisp, cl-unification.system + * match-block.lisp, templates-hierarchy.lisp, unifier.lisp + * lib-dependent/cl-ppcre-template.lisp: delete trailing whitespace + +2011-02-24 Robert Brown + + * unifier.lisp: Allow vectors to unify with sequence templates. + * test/unification-tests.lisp: new test to verify the change + +2011-02-16 Robert Brown + + * cl-unification.asd: Add support for asdf:test-system. + + * cl-unification-test.asd: File added. + +2011-01-18 author + + * unifier.lisp: + After a careful reading of PAIP fixed a very subtle bug in VAR-UNIFY + that prevented the correct unification of: + + (?x ?y a) + + with + + (?y ?x ?x) + + * substitutions.lisp: + Added debugging functions DUMP-FRAME and DUMP-ENVIRONMENT. + + * .cvsignore: Added .cvsignore file. + +2009-12-17 author + + * ChangeLog: ChangeLog updated. + + * lib-dependent/cl-ppcre-template.asd: Initial checkin. + + * lib-dependent/cl-ppcre-template.lisp: + Patched to use Cl-PPCRE:SCAN-TO-STRINGS (thanks to Pixel // pinterface [a] gmail dot com). + + * unifier.lisp: Minor cosmetic changes. + + * unification-package.lisp: Exported MATCHF-CASE. + + * templates-hierarchy.lisp: + Fixed a couple of problems with some accessors in the NUMBER, + STRUCTURE-OBJECT and STANDARD-OBJECT templates. + + * match-block.lisp: Added MATCHF* macros. + 2009-12-17 author * lib-dependent/cl-ppcre-template.asd: Initial checkin. diff -rN -u old-cl-unification-1/INSTALLATION new-cl-unification-1/INSTALLATION --- old-cl-unification-1/INSTALLATION 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/INSTALLATION 2013-07-24 22:58:24.000000000 +0000 @@ -5,18 +5,26 @@ Issuing - (mk:load-system "unification") + (mk:load-system "CL-UNIFICATION") or - (mk:compile-system "unification") + (mk:compile-system "CL-UNIFICATION") will make the UNIFY package available. +There is also an ASDF system definition for those who use this system. + +Issuing + + (asdf:oos 'asdf:load-op "CL-UNIFICATION") + +should make the library available in your environment. + If your CL implementation is ASDF-INSTALL aware, you should also be able to just say - (asdf-install:install "unification") + (asdf-install:install "CL-UNIFICATION") provided that the package is unpacked in an ASDF-INSTALL known directory. diff -rN -u old-cl-unification-1/README new-cl-unification-1/README --- old-cl-unification-1/README 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/README 2013-07-24 22:58:24.000000000 +0000 @@ -1,6 +1,6 @@ CL-UNIFICATION -Marco Antoniotti 2004 +Marco Antoniotti (c) 2004-2011 The directory containing this file you are reading should contain the code and the documentation of the CL-UNIFICATION package. diff -rN -u old-cl-unification-1/TIMESTAMP new-cl-unification-1/TIMESTAMP --- old-cl-unification-1/TIMESTAMP 1970-01-01 00:00:00.000000000 +0000 +++ new-cl-unification-1/TIMESTAMP 2013-07-24 22:58:24.000000000 +0000 @@ -0,0 +1 @@ +20120116 diff -rN -u old-cl-unification-1/apply-substitution.lisp new-cl-unification-1/apply-substitution.lisp --- old-cl-unification-1/apply-substitution.lisp 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/apply-substitution.lisp 2013-07-24 22:58:24.000000000 +0000 @@ -1,8 +1,10 @@ -;;; -*- Mode: Lisp -*- +;;;; -*- Mode: Lisp -*- -;;; substitutions.lisp -;;; General CL structures unifier. -;;; Substitution definitions. +;;;; apply-substitutions.lisp -- +;;;; General CL structures unifier. +;;;; Substitution definitions. +;;;; +;;;; See the file COPYING for copyright and licensing information. (in-package "CL.EXT.DACF.UNIFICATION") ; DACF = Data And Control Flow. @@ -70,8 +72,8 @@ finally (return (make-frame result-bindings))) into frames finally (return (make-environment :frames frames)))) - - + + ;;; ground-term -- @@ -80,4 +82,4 @@ (apply-substitution substitution term)) -;;; end of file -- apply-substitutions.lisp -- +;;;; end of file -- apply-substitutions.lisp -- diff -rN -u old-cl-unification-1/cl-unification-lib.asd new-cl-unification-1/cl-unification-lib.asd --- old-cl-unification-1/cl-unification-lib.asd 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/cl-unification-lib.asd 2013-07-24 22:58:24.000000000 +0000 @@ -2,6 +2,8 @@ ;;;; cl-unification-lib.asd -- ;;;; ASDF system file. +;;;; +;;;; See file COPYING for copyright and licensing information. (asdf:defsystem :cl-unification-lib :author "Marco Antoniotti" diff -rN -u old-cl-unification-1/cl-unification-test.asd new-cl-unification-1/cl-unification-test.asd --- old-cl-unification-1/cl-unification-test.asd 1970-01-01 00:00:00.000000000 +0000 +++ new-cl-unification-1/cl-unification-test.asd 2013-07-24 22:58:24.000000000 +0000 @@ -0,0 +1,31 @@ +;;;; cl-unification-test.asd + + +(in-package #:asdf) + +;; Tests implemented using the ptester framework are run at *load* time, so +;; we tell ASDF that loading a file containing ptester code is never done. +;; This causes ASDF to run all the tests whenever ASDF:LOAD-SYSTEM or +;; ASDF:TEST-SYSTEM is called with argument CL-UNIFICATION-TEST. + +(defclass ptester-source-file (cl-source-file) + () + (:documentation "A Common Lisp source file containing ptester code.")) + +(defmethod operation-done-p ((operation load-op) (component ptester-source-file)) + nil) + + +(in-package #:common-lisp-user) + +(defpackage #:cl-unification-test-system + (:use #:common-lisp #:asdf)) + +(in-package #:cl-unification-test-system) + +(defsystem #:cl-unification-test + :depends-on (:cl-unification :ptester) + :components + ((:module "test" + :components + ((:ptester-source-file "unification-tests"))))) diff -rN -u old-cl-unification-1/cl-unification.asd new-cl-unification-1/cl-unification.asd --- old-cl-unification-1/cl-unification.asd 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/cl-unification.asd 2013-07-24 22:58:24.000000000 +0000 @@ -1,40 +1,56 @@ ;;;; -*- Mode: Lisp -*- - ;;;; cl-unification.asd -- ;;;; ASDF system file. -;;;;=========================================================================== -;;;; Simple stuff that should be built in ASDF. +;;;; See file COPYING for copyright licensing information. (defpackage "CL-UNIFICATION-SYSTEM" (:use "CL" "ASDF")) (in-package "CL-UNIFICATION-SYSTEM") -(defclass asdf-system-definition-file (asdf:cl-source-file) ()) -(defmethod source-file-type ((c asdf-system-definition-file) (s module)) "asd") +(when (asdf:find-system 'asdf-system-connections nil) + (asdf:oos 'asdf:load-op 'asdf-system-connections)) +(defclass load-only-file (cl-source-file) + ((last-loaded :accessor load-date :initform nil))) +(defmethod operation-done-p ((op compile-op) (component load-only-file)) + t) +(defmethod perform :around ((op compile-op) (component load-only-file)) + nil) +(defmethod operation-done-p ((op load-op) (component load-only-file)) + (and (load-date component) + (>= (load-date component) (file-write-date (component-pathname component))))) +(defmethod perform ((op load-op) (component load-only-file)) + (prog1 (load (component-pathname component)) + (setf (load-date component) + (file-write-date (component-pathname component))))) (asdf:defsystem :cl-unification :author "Marco Antoniotti" + :in-order-to ((test-op (test-op :cl-unification-test))) :serial t :components ((:file "unification-package") (:file "variables") (:file "substitutions") (:file "lambda-list-parsing") (:file "templates-hierarchy") + (:file "template-reader") (:file "unifier") (:file "match-block") - (:file "apply-substitution") - #+asdf-with-optional-dependencies + (:file "apply-substitution"))) + +#+asdf-system-connections +(asdf:defsystem-connection cl-unification+cl-ppcre + :requires (:cl-ppcre :cl-unification) + :components ((:load-only-file "unification-package") + (:module "lib-dependent" + :components ((:file "cl-ppcre-template"))))) + +#+asdf-system-connections +(asdf:defsystem-connection cl-unification+named-readtables + :requires (:cl-unification :named-readtables) + :components ((:load-only-file "unification-package") (:module "lib-dependent" - :pathname "lib-dependent" - :depends-on ("templates-hierarchy" "unifier") - :components ((:file "cl-ppcre-template" - :depends-on (cl-ppcre)) - )) - #-asdf-with-optional-dependencies - (asdf-system-definition-file - "cl-unification-lib") - )) + :components ((:file "named-readtable"))))) ;;;; end of file -- cl-unification.asd -- diff -rN -u old-cl-unification-1/cl-unification.system new-cl-unification-1/cl-unification.system --- old-cl-unification-1/cl-unification.system 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/cl-unification.system 2013-07-24 22:58:24.000000000 +0000 @@ -3,6 +3,8 @@ ;;;; cl-unification.system -- ;;;; MK:DEFSYSTEM system file. +;;;; See file COPYING for copyright licensing information. + (mk:defsystem "CL-UNIFICATION" :source-extension "lisp" :components ("unification-package" @@ -20,5 +22,5 @@ ) )) )) - + ;;; end of file -- cl-unification.system -- diff -rN -u old-cl-unification-1/docs/html/control-flow.html new-cl-unification-1/docs/html/control-flow.html --- old-cl-unification-1/docs/html/control-flow.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/control-flow.html 2013-07-24 22:58:24.000000000 +0000 @@ -68,7 +68,7 @@ (defun factorial (x) (match-case (x) (0 1) - (#T(number ?n) (factorial (1- ?n))) + (#T(number ?n) (* ?n (factorial (1- ?n)))) (otherwise (error "Incorrect match for ~S." x))))

@@ -208,7 +208,7 @@
-

News

+ +
@@ -233,7 +234,7 @@ diff -rN -u old-cl-unification-1/docs/html/dictionary.html new-cl-unification-1/docs/html/dictionary.html --- old-cl-unification-1/docs/html/dictionary.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/dictionary.html 2013-07-24 22:58:24.000000000 +0000 @@ -279,7 +279,7 @@ @@ -339,7 +339,7 @@ diff -rN -u old-cl-unification-1/docs/html/downloads.html new-cl-unification-1/docs/html/downloads.html --- old-cl-unification-1/docs/html/downloads.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/downloads.html 2013-07-24 22:58:24.000000000 +0000 @@ -97,7 +97,7 @@
-

News

+
@@ -124,7 +124,7 @@ diff -rN -u old-cl-unification-1/docs/html/index.html new-cl-unification-1/docs/html/index.html --- old-cl-unification-1/docs/html/index.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/index.html 2013-07-24 22:58:24.000000000 +0000 @@ -15,7 +15,8 @@
@@ -33,23 +34,6 @@

Common Lisp Extensions: UNIFICATION

- - -

- DISCLAIMER: The code associated to these documents is not - completely tested and it is bound to contain errors and omissions. - This documentation may contain errors and omissions as well.

- -

Finally, the license under which the code is released is not - settled yet, although the file COPYING contains a - Berkeley-style license. For the time being you are advised to use - the code at your own risk. No warranty whatsoever is provided, the - author will not be held responsible for any effect generated by your - use of the library, and you can put here the scarier extra - disclaimer you can think of. -

-
-

The notion of unification originated in the field of formal logic (e.g. [R65],) and has been used extensively in Computer Science and Programming Languages. Most @@ -302,10 +286,29 @@ [R56] J. A. Robinson, A machine-oriented logic based on the resolution principle, Journal of the ACM, Vol. 12, No. 1, January 1965, Pages 23--49.

+ + +

+
+ +

+ DISCLAIMER: The code associated to these documents is not + completely tested and it is bound to contain errors and omissions. + This documentation may contain errors and omissions as well.

+ +

The file COPYING contains a Berkeley-style license. You + are advised to use the code at your own risk. No warranty + whatsoever is provided, the author will not be held responsible for + any effect generated by your use of the library, and you can put + here the scarier extra disclaimer you can think of. +

+
+
+ + @@ -111,7 +110,7 @@ diff -rN -u old-cl-unification-1/docs/html/mailing-lists.html new-cl-unification-1/docs/html/mailing-lists.html --- old-cl-unification-1/docs/html/mailing-lists.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/mailing-lists.html 2013-07-24 22:58:24.000000000 +0000 @@ -55,7 +55,7 @@ @@ -117,7 +117,7 @@ diff -rN -u old-cl-unification-1/docs/html/nil-template-class.html new-cl-unification-1/docs/html/nil-template-class.html --- old-cl-unification-1/docs/html/nil-template-class.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/nil-template-class.html 2013-07-24 22:58:24.000000000 +0000 @@ -61,7 +61,7 @@

Description:

The NIL-TEMPLATE class denotes those object that are used - to unify against a VECTOR.

+ to unify against NIL.

Template Syntax:

diff -rN -u old-cl-unification-1/docs/html/number-template-class.html new-cl-unification-1/docs/html/number-template-class.html --- old-cl-unification-1/docs/html/number-template-class.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/number-template-class.html 2013-07-24 22:58:24.000000000 +0000 @@ -17,7 +17,7 @@ | Previous | Next | Downloads - | Links + | Links
@@ -61,7 +61,7 @@

Description:

The NUMBER-TEMPLATE class denotes those object that are used - to unify against a VECTOR.

+ to unify against a NUMBER.

Template Syntax:

@@ -132,7 +132,7 @@

Notes:

-

There is no COMPLEX-NUMBER-TEMPLATE class, although a case for it can be easily made..

+

There is no COMPLEX-NUMBER-TEMPLATE class, although a case for it can be easily made.

diff -rN -u old-cl-unification-1/docs/html/string-template-class.html new-cl-unification-1/docs/html/string-template-class.html --- old-cl-unification-1/docs/html/string-template-class.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/string-template-class.html 2013-07-24 22:58:24.000000000 +0000 @@ -122,7 +122,7 @@

Affected By:

-

The value of the variable *UNIFY-STRING-CASE-INSENSITIVE-P*.

+

The value of the variable *UNIFY-STRING-CASE-SENSITIVE-P*.

Exceptional Situations:

diff -rN -u old-cl-unification-1/docs/html/templates.html new-cl-unification-1/docs/html/templates.html --- old-cl-unification-1/docs/html/templates.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/templates.html 2013-07-24 22:58:24.000000000 +0000 @@ -173,7 +173,7 @@
-

News

+
@@ -198,7 +198,7 @@ diff -rN -u old-cl-unification-1/docs/html/unification-dictionary.html new-cl-unification-1/docs/html/unification-dictionary.html --- old-cl-unification-1/docs/html/unification-dictionary.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/unification-dictionary.html 2013-07-24 22:58:24.000000000 +0000 @@ -38,19 +38,26 @@
  • Package CL.EXT.DACF.UNIFICATION
  • Generic function UNIFY -
  • Variable *UNIFY-STRING-CASE-INSENSITIVE* +
  • Variable *UNIFY-STRING-CASE-SENSITIVE*
  • Class TEMPLATE
  • Class EXPRESSION-TEMPLATE
  • Class ELEMENT-TEMPLATE
  • -
  • Class ARRAY-TEMPLATE
  • +
  • Class AREF-TEMPLATE
  • Class ELT-TEMPLATE
  • Class NTH-TEMPLATE
  • Class NTHCDR-TEMPLATE
  • Class TYPE-TEMPLATE + +
  • Class ARRAY-TEMPLATE
  • +
  • Class NIL-TEMPLATE +
  • Class NUMBER-TEMPLATE
  • Class SYMBOL-TEMPLATE +
  • Class STANDARD-OBJECT-TEMPLATE
  • +
  • Class STRUCTURE-OBJECT-TEMPLATE
  • +
  • Function MAKE-TEMPLATE
  • Generic function TEMPLATE-P
  • Accessor TEMPLATE-SPEC @@ -64,7 +71,7 @@ -

    Site Map

    +

    Enjoy!

    @@ -99,17 +106,19 @@
    -

    News

    +
    @@ -124,7 +133,7 @@ diff -rN -u old-cl-unification-1/docs/html/unify-function.html new-cl-unification-1/docs/html/unify-function.html --- old-cl-unification-1/docs/html/unify-function.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/unify-function.html 2013-07-24 22:58:24.000000000 +0000 @@ -163,7 +163,7 @@

    Two strings unify only is they are "equal", under the following - condition. If the variable *UNIFY-STRING-CASE-INSENSITIVE-P* is NIL + condition. If the variable *UNIFY-STRING-CASE-SENSITIVE-P* is T (the default) then the two strings s1 and s2 are compared using STRING=, otherwise they are compared using STRING-EQUAL.

    @@ -335,7 +335,7 @@

    See Also:

    MAKE-EMPTY-ENVIRONMENT, UNIFICATION-FAILURE, - *UNIFY-STRING-CASE-INSENSITIVE-P*, OCCURS-IN-P, + *UNIFY-STRING-CASE-SENSITIVE-P*, OCCURS-IN-P, *OCCURENCE-CHECK-P*.

    Notes:

    diff -rN -u old-cl-unification-1/docs/html/unifying-substitutions.html new-cl-unification-1/docs/html/unifying-substitutions.html --- old-cl-unification-1/docs/html/unifying-substitutions.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/unifying-substitutions.html 2013-07-24 22:58:24.000000000 +0000 @@ -162,7 +162,7 @@
    -

    News

    +
    @@ -187,7 +187,7 @@ diff -rN -u old-cl-unification-1/docs/html/usci-variable.html new-cl-unification-1/docs/html/usci-variable.html --- old-cl-unification-1/docs/html/usci-variable.html 2013-07-24 22:58:24.000000000 +0000 +++ new-cl-unification-1/docs/html/usci-variable.html 2013-07-24 22:58:24.000000000 +0000 @@ -1,6 +1,6 @@ - CL Unification: Variable *UNIFY-STRING-CASE-INSENSITIVE-P* + CL Unification: Variable *UNIFY-STRING-CASE-SENSITIVE-P* @@ -11,7 +11,7 @@
    - CL Unification: Variable *UNIFY-STRING-CASE-INSENSITIVE-P* + CL Unification: Variable *UNIFY-STRING-CASE-SENSITIVE-P*