[gnu.emacs] Beta version of cl.el

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