Mercurial > hg > xemacs-beta
diff lisp/cl-macs.el @ 4997:8800b5350a13
Move #'some, #'every to C, implementing them with mapcarX.
src/ChangeLog addition:
2010-02-03 Aidan Kehoe <kehoea@parhasard.net>
* fns.c (mapcarX):
Accept a new argument, indicating whether the function is being
called from #'some or #'every. Implement it.
Discard any multiple values where that is appropriate.
(Fmapconcat, FmapcarX, Fmapvector, Fmapcan, Fmapc, Fmap)
(Fmap_into):
Pass the new flag to mapcarX.
(Fsome, Fevery): Move these functions here from cl-extra.el;
implement them in terms of mapcarX.
(maplist): Discard multiple values where appropriate.
lisp/ChangeLog addition:
2010-02-03 Aidan Kehoe <kehoea@parhasard.net>
* cl-extra.el (some, every):
Move these functions to C.
* cl-macs.el (notany, notevery): Add compiler macros for these
functions, no longer proclaim them inline (which would involve
specbinding that's not necessary with the compiler macros).
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Wed, 03 Feb 2010 20:26:47 +0000 |
parents | c17c857e20bf |
children | 6aba0daedb7c b0f4adffca7d |
line wrap: on
line diff
--- a/lisp/cl-macs.el Wed Feb 03 20:18:53 2010 +0000 +++ b/lisp/cl-macs.el Wed Feb 03 20:26:47 2010 +0000 @@ -3545,6 +3545,12 @@ ;; ;; byte-optimize.el). ;; (t form))))) +(define-compiler-macro notany (&whole form &rest cl-rest) + (cons 'not (cons 'some (cdr cl-rest)))) + +(define-compiler-macro notevery (&whole form &rest cl-rest) + (cons 'not (cons 'every (cdr cl-rest)))) + (mapc #'(lambda (y) (put (car y) 'side-effect-free t) @@ -3572,7 +3578,7 @@ (cddadr cdr cdadr) (cdddar cdr cddar) (cddddr cdr cdddr))) ;;; Things that are inline. -(proclaim '(inline acons map concatenate notany notevery +(proclaim '(inline acons map concatenate ;; XEmacs omission: gethash is builtin cl-set-elt revappend nreconc))