quiroz@cs.rochester.edu (Cesar Quiroz) (10/29/89)
Some fixes have been applied (contributions of several people, that I thank warmly, no doubt accompanied by the rest of the user community) to the old cl.el, and a few new features that were long awaited also have made it to a beta release now available from cs.rochester.edu by anonymous ftp (/pub/cl{.el{,c},ChangeLog}). As my research leaves me with precious little spare time ( that I waste sleeping, for the most part :-), I don't expect I will be making any more changes of my own accord before sending this release to FSF. Brief review of changes: 1. Many old bugs have been fixed, especially in the arithmetic functions. 2. The bug in defstruct concerning `:include' was also fixed. 3. The mechanism to write functions with :keyword arguments is pretty much complete. I have included implementations of `member' and `reduce' as examples of how to write more of these. I would have liked to write the sequence functions in their entirety, but as my research leaves me ... etc. 4. Calling the c[ad]+r functions from compiled code is no slower than writing the expansion yourself. For instance (defun f1 (x) (cadadr x)) f1 (defun f2 (x) (car (cdr (car (cdr x))))) f2 (byte-compile 'f1) (lambda (x) (byte-code "A@A@" [x] 1)) - \ Note sameness (byte-compile 'f2) / (lambda (x) (byte-code "A@A@" [x] 1)) - (disassemble 'f1) byte code for f1: args: (x) 0 varref x 1 cdr 2 car 3 cdr 4 car 5 return I do hope this will reduce the temptation to reinvent these functions as macros. I wouldn't be surprised if I broke something here, though. If you use cl.el regularly and think you have the chance of finding some bugs, I will appreciate you snarf up a copy of this release and report back your findings. Or else this may end up in Version 19 as is... Thanks for your help! -- Cesar Augusto Quiroz Gonzalez Department of Computer Science University of Rochester Rochester, NY 14627