2.2 Special Read Syntax
Emacs Lisp represents many special objects and constructs via special hash notations.
‘#<…>
’
Objects that have no read syntax are presented like this (see Printed Representation).
‘##
’​
The printed representation of an interned symbol whose name is an empty string (see Symbol Type).
‘#'
’​
This is a shortcut for function
, see Anonymous Functions.
‘#:
’​
The printed representation of an uninterned symbol whose name is foo
is ‘#:foo
’ (see Symbol Type).
‘#N
’​
When printing circular structures, this construct is used to represent where the structure loops back onto itself, and ‘N
’ is the starting list count:
(let ((a (list 1)))
(setcdr a a))
=> (1 . #0)
‘#N=
’​
‘#N#
’​
‘#N=
’ gives the name to an object, and ‘#N#
’ represents that object, so when reading back the object, they will be the same object instead of copies (see Circular Objects).
‘#xN
’​
‘N
’ represented as a hexadecimal number (‘#x2a
’).
‘#oN
’​
‘N
’ represented as an octal number (‘#o52
’).
‘#bN
’​
‘N
’ represented as a binary number (‘#b101010
’).
‘#(…)
’​
String text properties (see Text Props and Strings).
‘#^
’​
A char table (see Char-Table Type).
‘#s(hash-table …)
’​
A hash table (see Hash Table Type).
‘?C
’​
A character (see Basic Char Syntax).
‘#$
’​
The current file name in byte-compiled files (see Docs and Compilation). This is not meant to be used in Emacs Lisp source files.
‘#@N
’​
Skip the next ‘N
’ characters (see Comments). This is used in byte-compiled files, and is not meant to be used in Emacs Lisp source files.