From xemacs-m  Wed May 14 18:36:24 1997
Received: from synaptics.synaptics.com (synaptics.synaptics.com [207.92.223.3])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id SAA26710
	for <xemacs-beta@xemacs.org>; Wed, 14 May 1997 18:36:21 -0500 (CDT)
Received: (from mail@localhost) by synaptics.synaptics.com (8.7.5/8.7.3) id QAA09957 for <xemacs-beta@xemacs.org>; Wed, 14 May 1997 16:35:43 -0700 (PDT)
X-Authentication-Warning: synaptics.synaptics.com: mail set sender to <daveg@thymus> using -f
Received: from synaptx.synaptics.com(192.147.44.16) by synaptics.synaptics.com via smap (V1.3)
	id sma009953; Wed May 14 16:35:39 1997
Received: from thymus.synaptics.com by synaptx.synaptics.com (4.1/SMI-4.1)
	id AA01820; Wed, 14 May 97 16:34:51 PDT
Received: by thymus.synaptics.com (4.1/SMI-4.1)
	id AA03165; Wed, 14 May 97 16:33:21 PDT
Message-Id: <9705142333.AA03165@thymus.synaptics.com>
To: xemacs-beta@xemacs.org
Subject: Re: Byte-compiler warning 
In-Reply-To: Your message of "14 May 97 13:43:32 PDT."
             <rviv0lrdhn.fsf@sdnp5.ucsd.edu> 
Reply-To: daveg@synaptics.com
Date: Wed, 14 May 97 16:33:20 -0700
From: Dave Gillespie <daveg@synaptics.com>

David Moore writes:
> I suggest that you use:
> 
> (cl-push  (list 'or (list 'boundp (list 'quote karg))
> 		(list 'set
> 		      (list 'quote karg))
> 		      (list 'quote karg))))

Why add that complication?  XEmacs will still need to accept
legacy code which tries to set a keyword to itself.  Setting a
keyword to itself more than once should be harmless.

> Also, is there any reason
> cl.el couldn't be brought into the wonderful world of backquote now that 
> it's in the emacs/xemacs readers?
> 
> (cl-push `(or (boundp ',karg)
> 	      (set ',karg ',karg)))

No reason.  I wrote the CL package before the enlightened days of
the new backquote syntax.  The old backquote syntax was terribly
clumsy and buggy, so I decided to avoid using backquotes altogether.
Nowadays, the backquote-avoiding code in CL is basically a relic,
but nobody wants to go to the trouble and risk of fixing something
that's not broken.

Note:  Some things that may look like relics in CL are not.  For
example, there is a reason the CL package internally uses `cl-push'
instead of `push', and avoids using `caddr', etc., for many
internal functions.  This was done to ensure that each of the
CL component files could be byte-compiled in isolation, without
having to compile or load any other CL components.  Maybe this
doesn't matter anymore now that CL is always installed and cl.el
itself is preloaded, but one would definitely want to think about
the issue carefully before messing around with that aspect of the
code.

								-- Dave

