diff options
author | Stefan Kangas <stefankangas@gmail.com> | 2025-03-29 14:59:26 +0100 |
---|---|---|
committer | Stefan Kangas <stefankangas@gmail.com> | 2025-03-29 14:59:36 +0100 |
commit | dd0dd87e3aaf3116c400fba858cbe35ced15f04e (patch) | |
tree | 8eb02249cdaa75121f13fb14c3c0b788eebe413b /lisp/emacs-lisp/rx.el | |
parent | 14cf4d538350fd2b1eda35101f5bb585f55e4659 (diff) | |
download | emacs-dd0dd87e3aaf3116c400fba858cbe35ced15f04e.tar.gz emacs-dd0dd87e3aaf3116c400fba858cbe35ced15f04e.tar.bz2 emacs-dd0dd87e3aaf3116c400fba858cbe35ced15f04e.zip |
New function 'hash-table-contains-p'
This function tests whether a given key is present in a hash table.
Emacs Lisp has long lacked a standard way to do this, leading users to
write one of:
(not (eq (gethash key table 'missing) 'missing))
or
(gethash key table)
This idiom is error-prone (when 'missing' or 'nil' are valid values),
and it obscures intent. The new function avoids such pitfalls,
improves readability, and makes the intent explicit:
(hash-table-contains-p key table)
The name 'hash-table-contains-p' exists in other Lisp dialects (e.g.,
SRFI-125), and follows the precedent of 'seq-contains-p'. Other
alternatives considered include `hash-table-has-key-p` and
`hash-table-key-exists-p`, but none were clearly better.
This was previously discussed in 2018, and all comments were positive,
but the proposed patch (implementing it in C) was never pushed:
https://lists.gnu.org/r/emacs-devel/2018-02/msg00424.html
* lisp/subr.el (hash-table-contains-p): New function.
* lisp/emacs-lisp/shortdoc.el (hash-table):
* doc/lispref/hash.texi (Other Hash): Document the new function.
* test/lisp/subr-tests.el (hash-table-contains-p): New test.
Diffstat (limited to 'lisp/emacs-lisp/rx.el')
0 files changed, 0 insertions, 0 deletions