Subject: Re: argument passing: defaults From: Erik Naggum <firstname.lastname@example.org> Date: 1997/09/24 Newsgroups: comp.lang.lisp Message-ID: <email@example.com> * firstname.lastname@example.org | (defun zz (&key (ar1 ..) (ar2 ..) (ar3 ..)) ...) | (defun xx (&key (ar1 nil ar1p) (ar2 nil ar1p) (ar3 nil ar3p)) | (apply #'zz (nconc (if ar1p (list :ar1 ar1)) (if ar2p (list :ar2 ar2)) | (if ar3p (list :ar3 ar3))))) | | Of course, this is suitable only is xx is not called too often - because | of the extra consing. Or maybe not? You have to cons up the list of args | for zz anyway, right? this looks like a case for (defun xx (&rest args &key ...) (apply #'zz args)) if you don't need access to the actual arguments, you don't even need to specify keyword arguments in xx. keywords arguments aren't processed at all if there is no &key in the lambda list. #\Erik -- if you think this year is "97", _you_ are not "year 2000 compliant". see http://www.naggum.no/emacs/ for Emacs-20-related material.