From: Brad Miller
Subject: Re: optional and key arguments
Date: 
Message-ID: <1989Aug28.174220.23409@cs.rochester.edu>
    Since optional arguments are evaluated first, c is bound to :d, and 0
    isn't a key argument.  Is this the Common Lisp standard?  

Yes; for a detailed description, read page 61 of CLtL, and the copious
examples on pgs. 63-65.

    If so, does
    it make sense?  

How else could you do it? (for generality, remember to handle the case of
two optional args, the first of which expects an argument of type keyword)
If you *really* want the effect of both, try not specifying either optional
or keyword args, but &rest only, and then process it yourself according to
any arcane rules you like... or write your own version of Defun (Defunny?)
that handles the lambda list for you by your own rules... and having a
sample implementation is 50% of getting something into the standard. Are we
having fun yet? :-)