From xemacs-m  Wed May 14 15:42:44 1997
Received: from mailbox2.ucsd.edu (mailbox2.ucsd.edu [132.239.1.54])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id PAA25379
	for <xemacs-beta@xemacs.org>; Wed, 14 May 1997 15:42:43 -0500 (CDT)
Received: from sdnp5.ucsd.edu (sdnp5.ucsd.edu [132.239.79.10]) by mailbox2.ucsd.edu (8.8.5/8.6.9) with SMTP id NAA09408 for <xemacs-beta@xemacs.org>; Wed, 14 May 1997 13:42:39 -0700 (PDT)
Received: by sdnp5.ucsd.edu (SMI-8.6/SMI-SVR4)
	id NAA23091; Wed, 14 May 1997 13:43:32 -0700
To: xemacs-beta@xemacs.org
Subject: Re: Byte-compiler warning
References: <9705141805.AA03049@thymus.synaptics.com> <86iv0lsy4k.fsf@kramer.in.aventail.com>
X-Face: "oX;zS#-JU$-,WKSzG.1gGE]x^cIg!hW.dq>.f6pzS^A+(k!T|M:}5{_%>Io<>L&{hO7W4cicOQ|>/lZ1G(m%7iaCf,6Qgk0%%Bz7b2-W3jd0m_UG\Y;?]}4s0O-U)uox>P3JN)9cm]O\@,vy2e{`3pb!"pqmRy3peB90*2L
Mail-Copies-To: never
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=US-ASCII
From: David Moore <dmoore@ucsd.edu>
Date: 14 May 1997 13:43:32 -0700
In-Reply-To: wmperry@aventail.com's message of 14 May 1997 11:32:27 -0700
Message-ID: <rviv0lrdhn.fsf@sdnp5.ucsd.edu>
Lines: 64
X-Mailer: Gnus v5.4.45/XEmacs 20.1

wmperry@aventail.com (William M. Perry) writes:

> ! 			 (cl-push (list 'set
> ! 					(list 'quote karg)
> ! 					(list 'quote karg))

I suggest that you use:

(cl-push  (list 'or (list 'boundp (list 'quote karg))
		(list 'set
		      (list 'quote karg)
		      (list 'quote karg))))

After all, they are supposed to be constants.  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)))

That just rolls off the tongue.  And things like:

(let* ((var (gensym "--keys--"))
       (allow '(:allow-other-keys))
       (check (list
	       'while var
	       (list
		'cond
		(list (list 'memq (list 'car var)
			    (list 'quote (append keys allow)))
		      (list 'setq var (list 'cdr (list 'cdr var))))
		(list (list 'car
			    (list 'cdr
				  (list 'memq (cons 'quote allow)
					restarg)))
		      (list 'setq var nil))
		(list t
		      (list
		       'error
		       (format "Keyword argument %%s not one of %s"
			       keys)
		       (list 'car var)))))))
  (cl-push (list 'let (list (list var restarg)) check) bind-forms))

turn into:


(let* ((var (gensym "--keys--"))
       (allow ':allow-other-keys)
       (check `(let ((,var ,restarg))
		 (while ,var
		   (cond
		    ((memq (car ,var) ',(append keys (list allow)))
		     (setq ,var (cdr (cdr ,var))))
		    ((car (cdr (memq ,allow ,restarg)))
		     (setq ,var nil))
		    (t
		     (error
		      ,(format "Keyword argument %%s not one of %s" keys)
		      (car ,var))))))))
  (cl-push check bind-forms))


which is infinitely more readable, etc.

