* 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.
Showing with 112 additions and 102 deletions