From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeed1.bredband.com!bredband!uio.no!nntp.uio.no!ifi.uio.no!not-for-mail From: Erik Naggum Newsgroups: comp.lang.lisp Subject: Re: When to recompile/reeval? Date: 12 Oct 2002 19:22:44 +0000 Organization: Naggum Software, Oslo, Norway Lines: 37 Message-ID: <3243439364078596@naggum.no> References: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: maud.ifi.uio.no 1034450565 28402 129.240.65.5 (12 Oct 2002 19:22:45 GMT) X-Complaints-To: abuse@ifi.uio.no NNTP-Posting-Date: 12 Oct 2002 19:22:45 GMT Mail-Copies-To: never User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Xref: archiver1.google.com comp.lang.lisp:43795 * tar@sevak.isi.edu (Thomas A. Russ) | Changing the definition of CLOS classes will also work on the fly | without requiring changes to the using code -- even if you add or delete | slots from the class. (Unless of course the code happens to use slots | you decide to delete...) It may help to understand how slot access works in CLOS compared to inferior object models. If you try to access a slot with `slot-value´, and it has been deleted, the system invokes an error handler that may still return a useful value. If you read a slot with an accessor generic function, that function can still exist and do useful things, and it might just be able to know enough about the caller to write a log entry that a maintenance programmer can use to update or correct it. These are features that are not available in the simple-minded object systems that are used in "static" languages. | One more systematic approach to this (if you project gets big enough to | be in multiple files) is to use one of the DEFSYSTEM utilities that | manage the dependencies among source files. Put macros and defstructs in | their own files, and mark the dependencies. Reasonably complete cross-referencing function are available in the real Common Lisp environments that can tell you which functions need to be recompiled if you change a macro (and indirectly a defstruct). These features are enormously helpful in locating both the source file and the functions and macros calling and called from a function or macro. They can also help you build a patch file of the functions that have changed after a macro has been changed for compilation as a patch. Depending on how you store your source files, extracting individual functions for recompilation may be a problem or no problem at all. -- Erik Naggum, Oslo, Norway Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.