From: Christophe R. <cs...@ca...> - 2003-02-04 09:14:43
|
"Paul F. Dietz" <di...@dl...> writes: > Robert E. Brown wrote: > > > I'm assuming of course that the checks for NIL optionals do not > > substantially slow down run times and that programmer productivity is viewed > > are more important than the last percent or two of performance. > > I would assume that the checks are only really necessary > in unusual situations (APPLY or non-constant forms supplying > the keywords); in the common cases compiler macros should > be able to get rid of them. As a general point that's probably true. But as the person to touch code/seq.lisp most recently, I'd just like to say that there's a lot of code that would need to be updated for it (that is, that compiler macros can take care of all the normal cases of keyword argument passing) to be true in the case of all the sequence functions. This is because, as well as :TEST/:TEST-NOT canonicalization, there's also :START/:END canonicalization, :COUNT canonicalization and :KEY canonicalization to do. It *would* probably be a win to do those bits of it that are possible at compile-time for all of these functions, not just FIND and POSITION, but it's a lot of work... Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |