Clarify permitted mutation in maphash documentation

* doc/lispref/hash.texi (Hash Access):
* src/fns.c (Fmaphash):
Make it clear what the function passed as argument can do.  Until now
these rules were unwritten, and are still unenforced.
This commit is contained in:
Mattias Engdegård 2024-01-19 15:52:13 +01:00
parent fec87a4b36
commit 7a87ca09a7
2 changed files with 6 additions and 0 deletions

View file

@ -206,6 +206,10 @@ This function calls @var{function} once for each of the associations in
@var{table}. The function @var{function} should accept two
arguments---a @var{key} listed in @var{table}, and its associated
@var{value}. @code{maphash} returns @code{nil}.
@var{function} is allowed to call @code{puthash} to set a new value
for @var{key} and @code{remhash} to remove @var{key}, but should not
add, remove or modify other associations in @var{table}.
@end defun
@node Defining Hash

View file

@ -5651,6 +5651,8 @@ DEFUN ("remhash", Fremhash, Sremhash, 2, 2, 0,
DEFUN ("maphash", Fmaphash, Smaphash, 2, 2, 0,
doc: /* Call FUNCTION for all entries in hash table TABLE.
FUNCTION is called with two arguments, KEY and VALUE.
It should not alter TABLE in any way other than using `puthash' to
set a new value for KEY, or `remhash' to remove KEY.
`maphash' always returns nil. */)
(Lisp_Object function, Lisp_Object table)
{