]> git.eshelyaron.com Git - emacs.git/commit
* lisp/emacs-lisp/map.el: Make the functions generic
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 11 Dec 2018 22:54:13 +0000 (17:54 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 11 Dec 2018 22:54:13 +0000 (17:54 -0500)
commit1691a51094d35ac4b2c311fa407c6b77eea7a105
tree676fe466b9607adb198a9779761243927834695e
parent1e34d7579c21b96235ba1a06d97cfae0a5d3f2eb
* lisp/emacs-lisp/map.el: Make the functions generic

Make them document their delegation relationship, to clarify when
a method is needed.
(map--dispatch): Give more info in the error message.
(map-elt): Make it generic and deprecate the 'testfn' arg.
(map-put): Make it obsolete.
(map-length): Make it work on hash-tables.
(map-apply): Define it in terms of map-do.
(map-do, map-into): Use cl-generic dispatch instead of map--dispatch.
(map-empty-p): Define it in terms of map-length.
(map-contains-key): Deprecate 'testfn'.  Make it return a boolean, so
it can return non-nil even if 'key' is nil.  Improve implementation to
avoid constructing an intermediate list of all keys.
(map-merge-with): Use 'eql' rather than `eq'.
(map-put!): Rename from map--put and make it generic, to replace map-put.
(map--apply-alist, map--apply-hash-table, map--apply-array):
Turn them into methods of map-apply.
(map--do-alist, map--do-array): Turn them into methods of map-do.
(map--into-hash-table): Turn it into a method of map-into.
etc/NEWS
lisp/emacs-lisp/map.el