Did you know ... | Search Documentation: |
Pack logicmoo_nlu -- ext/e2c/cl/emacs-cl/contrib/closette/README |
From: Marco Gidde <marco.gidde@tiscali.de> Date: 18 Apr 2004 00:15:04 +0200
Here we go!
What is Closette?
This answer is taken from the source file: ;;; Closette is an implementation of a subset of CLOS with a metaobject ;;; protocol as described in "The Art of The Metaobject Protocol", ;;; MIT Press, 1991.
Since Closette is a subset of CLOS there are several restrictions. The following were found by chance:
The current version of Emacs Common Lisp must be slightly modified to run with Closette. PRINT-OBJECT should be a generic function but is defined as a normal function in emacs-cl. At the time PRINT-OBJECT is defined in Closette, there is at least one call to REMOVE-IF-NOT which calles REMOVE-IF with the COMPLEMENTed function, but the latter uses PRINT-OBJECT and this leads to an endless recursion. So COMPLEMENT must be redefined without the use of PRINT-OBJECT.
To use Closette
(load "closette.lisp") (use-package :closette)
should be sufficient. There is a hint in the source file that one should not try to compile Closette. I don't know why and I did not try.
The tests within closette-tests.lisp should not be taken too literally. It is not a real test suite but a collection of definitions where the expected results are added as comments. These are sometimes wrong. Comparing the outputs of emacs-cl and CLisp running those tests showed essentially one difference (line 744) and CLisp seems to be right there.
I would finish this with "Have fun", but Closette is very slow under emacs-cl, so it is actually a GREAT fun if you are only masochistic enough.