nullprogram.com/blog/2010/06/07/
A printed hash table representation is pretty new to Elisp, and a bit
late. As far as I know Elisp didn't come with a way to print, and read
back in, a hash table without rolling your own
(like
Jared Dilettante was doing with a Data::Dumper style output),
until 23.1 in July 2009. This is
when
json.el
was first included with Emacs, for dumping to
and reading from JSON.
(require 'json)
(setq hash (make-hash-table))
(puthash "key1" "data1" hash)
(puthash "key2" "data2" hash)
(insert "\n;; " (json-encode hash))
;; {"key2":"data2", "key1":"data1"}
Just a month ago Emacs 23.2 came out, very silently
including a new
printed representation for hash tables with a #s
hash
notation.
#s(hash-table data ("key1" "data1" "key2" "data2"))
With this hash tables can be printed and read as part of normal
s-expressions with the standard lisp reader and printer functions. It
seems heavy, having to write out "hash-table
" in there,
but I think it's because the #s
notation will be used to
create printed forms of other lisp objects that currently do not have
one.