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