Mercurial > hg > xemacs-beta
diff lisp/cl-macs.el @ 5522:544e6336d37c
Reimplement a few GNU functions in terms of CL functions, subr.el
2011-06-19 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el:
* cl-macs.el (assoc-ignore-case, assoc-ignore-representation):
* cl-macs.el (member-ignore-case): New compiler macros.
* subr.el (assoc-ignore-case):
* subr.el (assoc-ignore-representation):
* subr.el (member-ignore-case):
* subr.el (split-path):
* subr.el (delete-dups):
Reimplement a few GNU functions in terms of their CL counterparts,
for the sake of circularity checking and some speed; add type
checking (used in interpreted code and with low speed and safety
checking) for the sake of revealing incompatibilities when
developing.
* subr.el (remove-hook):
There's no need for flet here, an explicit lambda is enough.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 19 Jun 2011 17:43:03 +0100 |
parents | 9d519ab9fd68 |
children | 810b77562486 |
line wrap: on
line diff
--- a/lisp/cl-macs.el Sun Jun 19 16:53:03 2011 +0100 +++ b/lisp/cl-macs.el Sun Jun 19 17:43:03 2011 +0100 @@ -3766,6 +3766,35 @@ (the string ,string) :test #'eq) form)) +(define-compiler-macro assoc-ignore-case (&whole form &rest args) + (if (eql 2 (length args)) + `(assoc* (the string ,(pop args)) + (the (and list (satisfies + (lambda (list) + (not (find-if-not 'stringp list :key 'car))))) + ,(pop args)) + :test 'equalp) + form)) + +(define-compiler-macro assoc-ignore-representation (&whole form &rest args) + (if (eql 2 (length args)) + `(assoc* (the string ,(pop args)) + (the (and list (satisfies + (lambda (list) + (not (find-if-not 'stringp list :key 'car))))) + ,(pop args)) + :test 'equalp) + form)) + +(define-compiler-macro member-ignore-case (&whole form &rest args) + (if (eql 2 (length args)) + `(member* (the string ,(pop args)) + (the (and list (satisfies + (lambda (list) (every 'stringp list)))) + ,(pop args)) + :test 'equalp) + form)) + (define-compiler-macro stable-union (&whole form &rest cl-keys) (if (> (length form) 2) (list* 'union (pop cl-keys) (pop cl-keys) :stable t cl-keys)