]> git.eshelyaron.com Git - emacs.git/commitdiff
Clarify that #s(hash-table ...) doesn't always create a new hash table
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 7 Feb 2021 13:47:09 +0000 (14:47 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 7 Feb 2021 13:47:09 +0000 (14:47 +0100)
* doc/lispref/hash.texi (Creating Hash): Note that the printed
representation doesn't necessarily create a new table (bug#23417).

* doc/lispref/lists.texi (Rearrangement): Link to Self-Evaluating
Forms to further expand upon immutability.

doc/lispref/hash.texi
doc/lispref/lists.texi

index 8781fad30cd1113848bc9e6b8551c56d5f554169..12c6a6590797a3d97cdca7bd7553c190e591de1f 100644 (file)
@@ -150,11 +150,11 @@ multiplied by an approximation to this value.  The default for
 @end table
 @end defun
 
-You can also create a new hash table using the printed representation
+You can also create a hash table using the printed representation
 for hash tables.  The Lisp reader can read this printed
 representation, provided each element in the specified hash table has
 a valid read syntax (@pxref{Printed Representation}).  For instance,
-the following specifies a new hash table containing the keys
+the following specifies a hash table containing the keys
 @code{key1} and @code{key2} (both symbols) associated with @code{val1}
 (a symbol) and @code{300} (a number) respectively.
 
@@ -162,6 +162,11 @@ the following specifies a new hash table containing the keys
 #s(hash-table size 30 data (key1 val1 key2 300))
 @end example
 
+Note, however, that when using this in Emacs Lisp code, it's
+undefined whether this creates a new hash table or not.  If you want
+to create a new hash table, you should always use
+@code{make-hash-table} (@pxref{Self-Evaluating Forms}).
+
 @noindent
 The printed representation for a hash table consists of @samp{#s}
 followed by a list beginning with @samp{hash-table}.  The rest of the
index c54496f616888286bd0992388f794774b241f0e0..2805b1f5fdc0becba00869e4b45be80ec2ffcc3f 100644 (file)
 @end group
 @end example
 
-However, the other arguments (all but the last) should be mutable lists.
-
-A common pitfall is to use a constant list as a non-last
-argument to @code{nconc}.  If you do this, the resulting behavior
-is undefined.  It is possible that your program will change
-each time you run it!  Here is what might happen (though this
-is not guaranteed to happen):
+However, the other arguments (all but the last) should be mutable
+lists.
+
+A common pitfall is to use a constant list as a non-last argument to
+@code{nconc}.  If you do this, the resulting behavior is undefined
+(@pxref{Self-Evaluating Forms}).  It is possible that your program
+will change each time you run it!  Here is what might happen (though
+this is not guaranteed to happen):
 
 @smallexample
 @group