*** empty log message ***
[bpt/emacs.git] / lispref / objects.texi
CommitLineData
5b359918
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
f9f59935 3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998 Free Software Foundation, Inc.
5b359918
RS
4@c See the file elisp.texi for copying conditions.
5@setfilename ../info/objects
2b3fc6c3 6@node Lisp Data Types, Numbers, Introduction, Top
5b359918
RS
7@chapter Lisp Data Types
8@cindex object
9@cindex Lisp object
10@cindex type
11@cindex data type
12
13 A Lisp @dfn{object} is a piece of data used and manipulated by Lisp
14programs. For our purposes, a @dfn{type} or @dfn{data type} is a set of
15possible objects.
16
17 Every object belongs to at least one type. Objects of the same type
18have similar structures and may usually be used in the same contexts.
19Types can overlap, and objects can belong to two or more types.
20Consequently, we can ask whether an object belongs to a particular type,
21but not for ``the'' type of an object.
22
23@cindex primitive type
24 A few fundamental object types are built into Emacs. These, from
25which all other types are constructed, are called @dfn{primitive
26types}. Each object belongs to one and only one primitive type. These
27types include @dfn{integer}, @dfn{float}, @dfn{cons}, @dfn{symbol},
8241495d 28@dfn{string}, @dfn{vector}, @dfn{subr}, and @dfn{byte-code function}, plus
5b359918
RS
29several special types, such as @dfn{buffer}, that are related to
30editing. (@xref{Editing Types}.)
31
32 Each primitive type has a corresponding Lisp function that checks
33whether an object is a member of that type.
34
35 Note that Lisp is unlike many other languages in that Lisp objects are
36@dfn{self-typing}: the primitive type of the object is implicit in the
37object itself. For example, if an object is a vector, nothing can treat
38it as a number; Lisp knows it is a vector, not a number.
39
40 In most languages, the programmer must declare the data type of each
41variable, and the type is known by the compiler but not represented in
42the data. Such type declarations do not exist in Emacs Lisp. A Lisp
2b3fc6c3
RS
43variable can have any type of value, and it remembers whatever value
44you store in it, type and all.
5b359918
RS
45
46 This chapter describes the purpose, printed representation, and read
47syntax of each of the standard types in GNU Emacs Lisp. Details on how
48to use these types can be found in later chapters.
49
50@menu
51* Printed Representation:: How Lisp objects are represented as text.
52* Comments:: Comments and their formatting conventions.
53* Programming Types:: Types found in all Lisp systems.
54* Editing Types:: Types specific to Emacs.
8241495d 55* Circular Objects:: Read syntax for circular structure.
5b359918
RS
56* Type Predicates:: Tests related to types.
57* Equality Predicates:: Tests of equality between any two objects.
58@end menu
59
60@node Printed Representation
61@comment node-name, next, previous, up
62@section Printed Representation and Read Syntax
63@cindex printed representation
64@cindex read syntax
65
66 The @dfn{printed representation} of an object is the format of the
67output generated by the Lisp printer (the function @code{prin1}) for
68that object. The @dfn{read syntax} of an object is the format of the
69input accepted by the Lisp reader (the function @code{read}) for that
f9f59935
RS
70object. @xref{Read and Print}.
71
72 Most objects have more than one possible read syntax. Some types of
969fe9b5
RS
73object have no read syntax, since it may not make sense to enter objects
74of these types directly in a Lisp program. Except for these cases, the
75printed representation of an object is also a read syntax for it.
5b359918
RS
76
77 In other languages, an expression is text; it has no other form. In
78Lisp, an expression is primarily a Lisp object and only secondarily the
79text that is the object's read syntax. Often there is no need to
80emphasize this distinction, but you must keep it in the back of your
81mind, or you will occasionally be very confused.
82
83@cindex hash notation
84 Every type has a printed representation. Some types have no read
969fe9b5
RS
85syntax---for example, the buffer type has none. Objects of these types
86are printed in @dfn{hash notation}: the characters @samp{#<} followed by
87a descriptive string (typically the type name followed by the name of
88the object), and closed with a matching @samp{>}. Hash notation cannot
89be read at all, so the Lisp reader signals the error
90@code{invalid-read-syntax} whenever it encounters @samp{#<}.
5b359918
RS
91@kindex invalid-read-syntax
92
93@example
94(current-buffer)
95 @result{} #<buffer objects.texi>
96@end example
97
98 When you evaluate an expression interactively, the Lisp interpreter
99first reads the textual representation of it, producing a Lisp object,
100and then evaluates that object (@pxref{Evaluation}). However,
101evaluation and reading are separate activities. Reading returns the
102Lisp object represented by the text that is read; the object may or may
103not be evaluated later. @xref{Input Functions}, for a description of
104@code{read}, the basic function for reading objects.
105
106@node Comments
107@comment node-name, next, previous, up
108@section Comments
109@cindex comments
110@cindex @samp{;} in comment
111
112 A @dfn{comment} is text that is written in a program only for the sake
113of humans that read the program, and that has no effect on the meaning
114of the program. In Lisp, a semicolon (@samp{;}) starts a comment if it
115is not within a string or character constant. The comment continues to
116the end of line. The Lisp reader discards comments; they do not become
117part of the Lisp objects which represent the program within the Lisp
118system.
119
bfe721d1
KH
120 The @samp{#@@@var{count}} construct, which skips the next @var{count}
121characters, is useful for program-generated comments containing binary
122data. The Emacs Lisp byte compiler uses this in its output files
123(@pxref{Byte Compilation}). It isn't meant for source files, however.
124
5b359918
RS
125 @xref{Comment Tips}, for conventions for formatting comments.
126
127@node Programming Types
128@section Programming Types
129@cindex programming types
130
131 There are two general categories of types in Emacs Lisp: those having
132to do with Lisp programming, and those having to do with editing. The
133former exist in many Lisp implementations, in one form or another. The
134latter are unique to Emacs Lisp.
135
136@menu
137* Integer Type:: Numbers without fractional parts.
138* Floating Point Type:: Numbers with fractional parts and with a large range.
139* Character Type:: The representation of letters, numbers and
140 control characters.
3e099569
RS
141* Symbol Type:: A multi-use object that refers to a function,
142 variable, or property list, and has a unique identity.
5b359918 143* Sequence Type:: Both lists and arrays are classified as sequences.
2b3fc6c3 144* Cons Cell Type:: Cons cells, and lists (which are made from cons cells).
5b359918
RS
145* Array Type:: Arrays include strings and vectors.
146* String Type:: An (efficient) array of characters.
147* Vector Type:: One-dimensional arrays.
f9f59935
RS
148* Char-Table Type:: One-dimensional sparse arrays indexed by characters.
149* Bool-Vector Type:: One-dimensional arrays of @code{t} or @code{nil}.
8241495d 150* Hash Table Type:: Super-fast lookup tables.
3e099569
RS
151* Function Type:: A piece of executable code you can call from elsewhere.
152* Macro Type:: A method of expanding an expression into another
5b359918
RS
153 expression, more fundamental but less pretty.
154* Primitive Function Type:: A function written in C, callable from Lisp.
155* Byte-Code Type:: A function written in Lisp, then compiled.
156* Autoload Type:: A type used for automatically loading seldom-used
157 functions.
158@end menu
159
160@node Integer Type
161@subsection Integer Type
162
0fddfa72
RS
163 The range of values for integers in Emacs Lisp is @minus{}134217728 to
164134217727 (28 bits; i.e.,
5b359918 165@ifinfo
0fddfa72 166-2**27
5b359918
RS
167@end ifinfo
168@tex
8241495d 169@math{-2^{27}}
5b359918
RS
170@end tex
171to
172@ifinfo
0fddfa72 1732**27 - 1)
5b359918
RS
174@end ifinfo
175@tex
8241495d 176@math{2^{28}-1})
5b359918 177@end tex
0fddfa72
RS
178on most machines. (Some machines may provide a wider range.) It is
179important to note that the Emacs Lisp arithmetic functions do not check
180for overflow. Thus @code{(1+ 134217727)} is @minus{}134217728 on most
181machines.
5b359918 182
2b3fc6c3 183 The read syntax for integers is a sequence of (base ten) digits with an
5b359918
RS
184optional sign at the beginning and an optional period at the end. The
185printed representation produced by the Lisp interpreter never has a
186leading @samp{+} or a final @samp{.}.
187
188@example
189@group
190-1 ; @r{The integer -1.}
1911 ; @r{The integer 1.}
8241495d 1921. ; @r{Also the integer 1.}
5b359918 193+1 ; @r{Also the integer 1.}
969fe9b5 194268435457 ; @r{Also the integer 1 on a 28-bit implementation.}
5b359918
RS
195@end group
196@end example
197
198 @xref{Numbers}, for more information.
199
200@node Floating Point Type
201@subsection Floating Point Type
202
f9f59935
RS
203 Emacs supports floating point numbers (though there is a compilation
204option to disable them). The precise range of floating point numbers is
205machine-specific.
5b359918
RS
206
207 The printed representation for floating point numbers requires either
208a decimal point (with at least one digit following), an exponent, or
209both. For example, @samp{1500.0}, @samp{15e2}, @samp{15.0e2},
210@samp{1.5e3}, and @samp{.15e4} are five ways of writing a floating point
211number whose value is 1500. They are all equivalent.
212
213 @xref{Numbers}, for more information.
214
215@node Character Type
216@subsection Character Type
8241495d 217@cindex @sc{ascii} character codes
5b359918
RS
218
219 A @dfn{character} in Emacs Lisp is nothing more than an integer. In
220other words, characters are represented by their character codes. For
221example, the character @kbd{A} is represented as the @w{integer 65}.
222
223 Individual characters are not often used in programs. It is far more
224common to work with @emph{strings}, which are sequences composed of
225characters. @xref{String Type}.
226
227 Characters in strings, buffers, and files are currently limited to the
f9f59935 228range of 0 to 524287---nineteen bits. But not all values in that range
969fe9b5
RS
229are valid character codes. Codes 0 through 127 are ASCII codes; the
230rest are non-ASCII (@pxref{Non-ASCII Characters}). Characters that represent
231keyboard input have a much wider range, to encode modifier keys such as
232Control, Meta and Shift.
5b359918
RS
233
234@cindex read syntax for characters
235@cindex printed representation for characters
236@cindex syntax for characters
b6954afd
RS
237@cindex @samp{?} in character constant
238@cindex question mark in character constant
5b359918
RS
239 Since characters are really integers, the printed representation of a
240character is a decimal number. This is also a possible read syntax for
241a character, but writing characters that way in Lisp programs is a very
242bad idea. You should @emph{always} use the special read syntax formats
243that Emacs Lisp provides for characters. These syntax formats start
244with a question mark.
245
246 The usual read syntax for alphanumeric characters is a question mark
247followed by the character; thus, @samp{?A} for the character
248@kbd{A}, @samp{?B} for the character @kbd{B}, and @samp{?a} for the
249character @kbd{a}.
250
251 For example:
252
253@example
254?Q @result{} 81 ?q @result{} 113
255@end example
256
257 You can use the same syntax for punctuation characters, but it is
2b3fc6c3
RS
258often a good idea to add a @samp{\} so that the Emacs commands for
259editing Lisp code don't get confused. For example, @samp{?\ } is the
260way to write the space character. If the character is @samp{\}, you
261@emph{must} use a second @samp{\} to quote it: @samp{?\\}.
5b359918
RS
262
263@cindex whitespace
264@cindex bell character
265@cindex @samp{\a}
266@cindex backspace
267@cindex @samp{\b}
268@cindex tab
269@cindex @samp{\t}
270@cindex vertical tab
271@cindex @samp{\v}
272@cindex formfeed
273@cindex @samp{\f}
274@cindex newline
275@cindex @samp{\n}
276@cindex return
277@cindex @samp{\r}
278@cindex escape
279@cindex @samp{\e}
280 You can express the characters Control-g, backspace, tab, newline,
281vertical tab, formfeed, return, and escape as @samp{?\a}, @samp{?\b},
282@samp{?\t}, @samp{?\n}, @samp{?\v}, @samp{?\f}, @samp{?\r}, @samp{?\e},
f9f59935 283respectively. Thus,
5b359918
RS
284
285@example
286?\a @result{} 7 ; @r{@kbd{C-g}}
287?\b @result{} 8 ; @r{backspace, @key{BS}, @kbd{C-h}}
288?\t @result{} 9 ; @r{tab, @key{TAB}, @kbd{C-i}}
969fe9b5 289?\n @result{} 10 ; @r{newline, @kbd{C-j}}
5b359918
RS
290?\v @result{} 11 ; @r{vertical tab, @kbd{C-k}}
291?\f @result{} 12 ; @r{formfeed character, @kbd{C-l}}
292?\r @result{} 13 ; @r{carriage return, @key{RET}, @kbd{C-m}}
293?\e @result{} 27 ; @r{escape character, @key{ESC}, @kbd{C-[}}
294?\\ @result{} 92 ; @r{backslash character, @kbd{\}}
8241495d 295?\d @result{} 127 ; @r{delete character, @key{DEL}}
5b359918
RS
296@end example
297
298@cindex escape sequence
299 These sequences which start with backslash are also known as
300@dfn{escape sequences}, because backslash plays the role of an escape
301character; this usage has nothing to do with the character @key{ESC}.
302
303@cindex control characters
304 Control characters may be represented using yet another read syntax.
305This consists of a question mark followed by a backslash, caret, and the
306corresponding non-control character, in either upper or lower case. For
307example, both @samp{?\^I} and @samp{?\^i} are valid read syntax for the
308character @kbd{C-i}, the character whose value is 9.
309
310 Instead of the @samp{^}, you can use @samp{C-}; thus, @samp{?\C-i} is
311equivalent to @samp{?\^I} and to @samp{?\^i}:
312
313@example
314?\^I @result{} 9 ?\C-I @result{} 9
315@end example
316
f9f59935 317 In strings and buffers, the only control characters allowed are those
8241495d 318that exist in @sc{ascii}; but for keyboard input purposes, you can turn
f9f59935 319any character into a control character with @samp{C-}. The character
8241495d 320codes for these non-@sc{ascii} control characters include the
969fe9b5 321@tex
8241495d 322@math{2^{26}}
969fe9b5 323@end tex
bfe721d1
KH
324@ifinfo
3252**26
326@end ifinfo
327bit as well as the code for the corresponding non-control
8241495d 328character. Ordinary terminals have no way of generating non-@sc{ascii}
ebc6903b
RS
329control characters, but you can generate them straightforwardly using X
330and other window systems.
5b359918 331
bfe721d1
KH
332 For historical reasons, Emacs treats the @key{DEL} character as
333the control equivalent of @kbd{?}:
5b359918
RS
334
335@example
336?\^? @result{} 127 ?\C-? @result{} 127
337@end example
338
bfe721d1
KH
339@noindent
340As a result, it is currently not possible to represent the character
969fe9b5
RS
341@kbd{Control-?}, which is a meaningful input character under X, using
342@samp{\C-}. It is not easy to change this, as various Lisp files refer
343to @key{DEL} in this way.
bfe721d1 344
5b359918
RS
345 For representing control characters to be found in files or strings,
346we recommend the @samp{^} syntax; for control characters in keyboard
969fe9b5
RS
347input, we prefer the @samp{C-} syntax. Which one you use does not
348affect the meaning of the program, but may guide the understanding of
349people who read it.
5b359918
RS
350
351@cindex meta characters
352 A @dfn{meta character} is a character typed with the @key{META}
353modifier key. The integer that represents such a character has the
969fe9b5 354@tex
8241495d 355@math{2^{27}}
969fe9b5 356@end tex
bfe721d1
KH
357@ifinfo
3582**27
359@end ifinfo
360bit set (which on most machines makes it a negative number). We
5b359918
RS
361use high bits for this and other modifiers to make possible a wide range
362of basic character codes.
363
bfe721d1 364 In a string, the
969fe9b5 365@tex
8241495d 366@math{2^{7}}
969fe9b5 367@end tex
bfe721d1
KH
368@ifinfo
3692**7
370@end ifinfo
f9f59935
RS
371bit attached to an ASCII character indicates a meta character; thus, the
372meta characters that can fit in a string have codes in the range from
8241495d 373128 to 255, and are the meta versions of the ordinary @sc{ascii}
f9f59935
RS
374characters. (In Emacs versions 18 and older, this convention was used
375for characters outside of strings as well.)
5b359918
RS
376
377 The read syntax for meta characters uses @samp{\M-}. For example,
378@samp{?\M-A} stands for @kbd{M-A}. You can use @samp{\M-} together with
2b3fc6c3
RS
379octal character codes (see below), with @samp{\C-}, or with any other
380syntax for a character. Thus, you can write @kbd{M-A} as @samp{?\M-A},
381or as @samp{?\M-\101}. Likewise, you can write @kbd{C-M-b} as
382@samp{?\M-\C-b}, @samp{?\C-\M-b}, or @samp{?\M-\002}.
5b359918 383
f9f59935 384 The case of a graphic character is indicated by its character code;
8241495d
RS
385for example, @sc{ascii} distinguishes between the characters @samp{a}
386and @samp{A}. But @sc{ascii} has no way to represent whether a control
f9f59935 387character is upper case or lower case. Emacs uses the
969fe9b5 388@tex
8241495d 389@math{2^{25}}
969fe9b5 390@end tex
bfe721d1
KH
391@ifinfo
3922**25
393@end ifinfo
969fe9b5 394bit to indicate that the shift key was used in typing a control
bfe721d1 395character. This distinction is possible only when you use X terminals
969fe9b5 396or other special terminals; ordinary terminals do not report the
b6954afd
RS
397distinction to the computer in any way. The Lisp syntax for
398the shift bit is @samp{\S-}; thus, @samp{?\C-\S-o} or @samp{?\C-\S-O}
399represents the shifted-control-o character.
5b359918
RS
400
401@cindex hyper characters
402@cindex super characters
403@cindex alt characters
404 The X Window System defines three other modifier bits that can be set
405in a character: @dfn{hyper}, @dfn{super} and @dfn{alt}. The syntaxes
a9f0a989
RS
406for these bits are @samp{\H-}, @samp{\s-} and @samp{\A-}. (Case is
407significant in these prefixes.) Thus, @samp{?\H-\M-\A-x} represents
408@kbd{Alt-Hyper-Meta-x}.
969fe9b5 409@tex
bfe721d1 410Numerically, the
8241495d 411bit values are @math{2^{22}} for alt, @math{2^{23}} for super and @math{2^{24}} for hyper.
969fe9b5 412@end tex
bfe721d1
KH
413@ifinfo
414Numerically, the
415bit values are 2**22 for alt, 2**23 for super and 2**24 for hyper.
416@end ifinfo
5b359918 417
5b359918
RS
418@cindex @samp{\} in character constant
419@cindex backslash in character constant
420@cindex octal character code
f9f59935
RS
421 Finally, the most general read syntax for a character represents the
422character code in either octal or hex. To use octal, write a question
423mark followed by a backslash and the octal character code (up to three
5b359918
RS
424octal digits); thus, @samp{?\101} for the character @kbd{A},
425@samp{?\001} for the character @kbd{C-a}, and @code{?\002} for the
8241495d 426character @kbd{C-b}. Although this syntax can represent any @sc{ascii}
5b359918 427character, it is preferred only when the precise octal value is more
8241495d 428important than the @sc{ascii} representation.
5b359918
RS
429
430@example
431@group
432?\012 @result{} 10 ?\n @result{} 10 ?\C-j @result{} 10
433?\101 @result{} 65 ?A @result{} 65
434@end group
435@end example
436
f9f59935
RS
437 To use hex, write a question mark followed by a backslash, @samp{x},
438and the hexadecimal character code. You can use any number of hex
439digits, so you can represent any character code in this way.
440Thus, @samp{?\x41} for the character @kbd{A}, @samp{?\x1} for the
ebc6903b 441character @kbd{C-a}, and @code{?\x8e0} for the character
f9f59935 442@iftex
969fe9b5 443@samp{@`a}.
f9f59935
RS
444@end iftex
445@ifinfo
446@samp{a} with grave accent.
447@end ifinfo
448
5b359918
RS
449 A backslash is allowed, and harmless, preceding any character without
450a special escape meaning; thus, @samp{?\+} is equivalent to @samp{?+}.
451There is no reason to add a backslash before most characters. However,
452you should add a backslash before any of the characters
453@samp{()\|;'`"#.,} to avoid confusing the Emacs commands for editing
454Lisp code. Also add a backslash before whitespace characters such as
455space, tab, newline and formfeed. However, it is cleaner to use one of
456the easily readable escape sequences, such as @samp{\t}, instead of an
457actual whitespace character such as a tab.
458
2b3fc6c3
RS
459@node Symbol Type
460@subsection Symbol Type
461
462 A @dfn{symbol} in GNU Emacs Lisp is an object with a name. The symbol
463name serves as the printed representation of the symbol. In ordinary
464use, the name is unique---no two symbols have the same name.
465
466 A symbol can serve as a variable, as a function name, or to hold a
467property list. Or it may serve only to be distinct from all other Lisp
468objects, so that its presence in a data structure may be recognized
469reliably. In a given context, usually only one of these uses is
470intended. But you can use one symbol in all of these ways,
471independently.
472
473@cindex @samp{\} in symbols
474@cindex backslash in symbols
475 A symbol name can contain any characters whatever. Most symbol names
476are written with letters, digits, and the punctuation characters
477@samp{-+=*/}. Such names require no special punctuation; the characters
478of the name suffice as long as the name does not look like a number.
479(If it does, write a @samp{\} at the beginning of the name to force
480interpretation as a symbol.) The characters @samp{_~!@@$%^&:<>@{@}} are
481less often used but also require no special punctuation. Any other
482characters may be included in a symbol's name by escaping them with a
483backslash. In contrast to its use in strings, however, a backslash in
484the name of a symbol simply quotes the single character that follows the
485backslash. For example, in a string, @samp{\t} represents a tab
486character; in the name of a symbol, however, @samp{\t} merely quotes the
969fe9b5 487letter @samp{t}. To have a symbol with a tab character in its name, you
2b3fc6c3
RS
488must actually use a tab (preceded with a backslash). But it's rare to
489do such a thing.
490
491@cindex CL note---case of letters
492@quotation
ec221d13 493@b{Common Lisp note:} In Common Lisp, lower case letters are always
bfe721d1
KH
494``folded'' to upper case, unless they are explicitly escaped. In Emacs
495Lisp, upper case and lower case letters are distinct.
2b3fc6c3
RS
496@end quotation
497
498 Here are several examples of symbol names. Note that the @samp{+} in
499the fifth example is escaped to prevent it from being read as a number.
bfe721d1 500This is not necessary in the sixth example because the rest of the name
2b3fc6c3
RS
501makes it invalid as a number.
502
503@example
504@group
505foo ; @r{A symbol named @samp{foo}.}
506FOO ; @r{A symbol named @samp{FOO}, different from @samp{foo}.}
507char-to-string ; @r{A symbol named @samp{char-to-string}.}
508@end group
509@group
5101+ ; @r{A symbol named @samp{1+}}
511 ; @r{(not @samp{+1}, which is an integer).}
512@end group
513@group
514\+1 ; @r{A symbol named @samp{+1}}
515 ; @r{(not a very readable name).}
516@end group
517@group
518\(*\ 1\ 2\) ; @r{A symbol named @samp{(* 1 2)} (a worse name).}
519@c the @'s in this next line use up three characters, hence the
520@c apparent misalignment of the comment.
521+-*/_~!@@$%^&=:<>@{@} ; @r{A symbol named @samp{+-*/_~!@@$%^&=:<>@{@}}.}
522 ; @r{These characters need not be escaped.}
523@end group
524@end example
525
8241495d
RS
526@cindex @samp{#:} read syntax
527 Normally the Lisp reader interns all symbols (@pxref{Creating
528Symbols}). To prevent interning, you can write @samp{#:} before the
529name of the symbol.
530
5b359918
RS
531@node Sequence Type
532@subsection Sequence Types
533
534 A @dfn{sequence} is a Lisp object that represents an ordered set of
535elements. There are two kinds of sequence in Emacs Lisp, lists and
536arrays. Thus, an object of type list or of type array is also
537considered a sequence.
538
969fe9b5
RS
539 Arrays are further subdivided into strings, vectors, char-tables and
540bool-vectors. Vectors can hold elements of any type, but string
541elements must be characters, and bool-vector elements must be @code{t}
542or @code{nil}. The characters in a string can have text properties like
543characters in a buffer (@pxref{Text Properties}); vectors and
544bool-vectors do not support text properties even when their elements
545happen to be characters. Char-tables are like vectors except that they
546are indexed by any valid character code.
547
548 Lists, strings and the other array types are different, but they have
549important similarities. For example, all have a length @var{l}, and all
550have elements which can be indexed from zero to @var{l} minus one.
551Several functions, called sequence functions, accept any kind of
5b359918
RS
552sequence. For example, the function @code{elt} can be used to extract
553an element of a sequence, given its index. @xref{Sequences Arrays
554Vectors}.
555
969fe9b5
RS
556 It is generally impossible to read the same sequence twice, since
557sequences are always created anew upon reading. If you read the read
558syntax for a sequence twice, you get two sequences with equal contents.
559There is one exception: the empty list @code{()} always stands for the
560same object, @code{nil}.
5b359918 561
2b3fc6c3
RS
562@node Cons Cell Type
563@subsection Cons Cell and List Types
5b359918
RS
564@cindex address field of register
565@cindex decrement field of register
ebc6903b 566@cindex pointers
5b359918 567
b6954afd
RS
568 A @dfn{cons cell} is an object that consists of two slots, called the
569@sc{car} slot and the @sc{cdr} slot. Each slot can @dfn{hold} or
8241495d 570@dfn{refer to} any Lisp object. We also say that ``the @sc{car} of
b6954afd
RS
571this cons cell is'' whatever object its @sc{car} slot currently holds,
572and likewise for the @sc{cdr}.
573
574@quotation
575A note to C programmers: in Lisp, we do not distinguish between
576``holding'' a value and ``pointing to'' the value, because pointers in
577Lisp are implicit.
578@end quotation
2b3fc6c3
RS
579
580 A @dfn{list} is a series of cons cells, linked together so that the
ebc6903b 581@sc{cdr} slot of each cons cell holds either the next cons cell or the
2b3fc6c3
RS
582empty list. @xref{Lists}, for functions that work on lists. Because
583most cons cells are used as part of lists, the phrase @dfn{list
584structure} has come to refer to any structure made out of cons cells.
5b359918 585
ebc6903b 586 The names @sc{car} and @sc{cdr} derive from the history of Lisp. The
5b359918
RS
587original Lisp implementation ran on an @w{IBM 704} computer which
588divided words into two parts, called the ``address'' part and the
589``decrement''; @sc{car} was an instruction to extract the contents of
590the address part of a register, and @sc{cdr} an instruction to extract
591the contents of the decrement. By contrast, ``cons cells'' are named
b6954afd 592for the function @code{cons} that creates them, which in turn was named
5b359918
RS
593for its purpose, the construction of cells.
594
595@cindex atom
596 Because cons cells are so central to Lisp, we also have a word for
597``an object which is not a cons cell''. These objects are called
598@dfn{atoms}.
599
600@cindex parenthesis
601 The read syntax and printed representation for lists are identical, and
602consist of a left parenthesis, an arbitrary number of elements, and a
603right parenthesis.
604
605 Upon reading, each object inside the parentheses becomes an element
606of the list. That is, a cons cell is made for each element. The
b6954afd
RS
607@sc{car} slot of the cons cell holds the element, and its @sc{cdr}
608slot refers to the next cons cell of the list, which holds the next
ebc6903b 609element in the list. The @sc{cdr} slot of the last cons cell is set to
b6954afd 610hold @code{nil}.
5b359918
RS
611
612@cindex box diagrams, for lists
613@cindex diagrams, boxed, for lists
614 A list can be illustrated by a diagram in which the cons cells are
ebc6903b
RS
615shown as pairs of boxes, like dominoes. (The Lisp reader cannot read
616such an illustration; unlike the textual notation, which can be
617understood by both humans and computers, the box illustrations can be
618understood only by humans.) This picture represents the three-element
619list @code{(rose violet buttercup)}:
5b359918
RS
620
621@example
622@group
969fe9b5
RS
623 --- --- --- --- --- ---
624 | | |--> | | |--> | | |--> nil
625 --- --- --- --- --- ---
5b359918
RS
626 | | |
627 | | |
628 --> rose --> violet --> buttercup
629@end group
630@end example
631
b6954afd
RS
632 In this diagram, each box represents a slot that can hold or refer to
633any Lisp object. Each pair of boxes represents a cons cell. Each arrow
634represents a reference to a Lisp object, either an atom or another cons
635cell.
5b359918 636
ebc6903b 637 In this example, the first box, which holds the @sc{car} of the first
b6954afd
RS
638cons cell, refers to or ``holds'' @code{rose} (a symbol). The second
639box, holding the @sc{cdr} of the first cons cell, refers to the next
ebc6903b
RS
640pair of boxes, the second cons cell. The @sc{car} of the second cons
641cell is @code{violet}, and its @sc{cdr} is the third cons cell. The
642@sc{cdr} of the third (and last) cons cell is @code{nil}.
5b359918 643
ebc6903b 644 Here is another diagram of the same list, @code{(rose violet
5b359918
RS
645buttercup)}, sketched in a different manner:
646
647@smallexample
648@group
649 --------------- ---------------- -------------------
650| car | cdr | | car | cdr | | car | cdr |
651| rose | o-------->| violet | o-------->| buttercup | nil |
652| | | | | | | | |
653 --------------- ---------------- -------------------
654@end group
655@end smallexample
656
657@cindex @samp{(@dots{})} in lists
658@cindex @code{nil} in lists
659@cindex empty list
660 A list with no elements in it is the @dfn{empty list}; it is identical
661to the symbol @code{nil}. In other words, @code{nil} is both a symbol
662and a list.
663
664 Here are examples of lists written in Lisp syntax:
665
666@example
667(A 2 "A") ; @r{A list of three elements.}
668() ; @r{A list of no elements (the empty list).}
669nil ; @r{A list of no elements (the empty list).}
670("A ()") ; @r{A list of one element: the string @code{"A ()"}.}
671(A ()) ; @r{A list of two elements: @code{A} and the empty list.}
672(A nil) ; @r{Equivalent to the previous.}
673((A B C)) ; @r{A list of one element}
674 ; @r{(which is a list of three elements).}
675@end example
676
677 Here is the list @code{(A ())}, or equivalently @code{(A nil)},
678depicted with boxes and arrows:
679
680@example
681@group
969fe9b5
RS
682 --- --- --- ---
683 | | |--> | | |--> nil
684 --- --- --- ---
5b359918
RS
685 | |
686 | |
687 --> A --> nil
688@end group
689@end example
690
691@menu
692* Dotted Pair Notation:: An alternative syntax for lists.
693* Association List Type:: A specially constructed list.
694@end menu
695
696@node Dotted Pair Notation
697@comment node-name, next, previous, up
698@subsubsection Dotted Pair Notation
699@cindex dotted pair notation
700@cindex @samp{.} in lists
701
702 @dfn{Dotted pair notation} is an alternative syntax for cons cells
703that represents the @sc{car} and @sc{cdr} explicitly. In this syntax,
704@code{(@var{a} .@: @var{b})} stands for a cons cell whose @sc{car} is
705the object @var{a}, and whose @sc{cdr} is the object @var{b}. Dotted
706pair notation is therefore more general than list syntax. In the dotted
707pair notation, the list @samp{(1 2 3)} is written as @samp{(1 . (2 . (3
ebc6903b
RS
708. nil)))}. For @code{nil}-terminated lists, you can use either
709notation, but list notation is usually clearer and more convenient.
710When printing a list, the dotted pair notation is only used if the
711@sc{cdr} of a cons cell is not a list.
5b359918 712
ebc6903b
RS
713 Here's an example using boxes to illustrate dotted pair notation.
714This example shows the pair @code{(rose . violet)}:
5b359918
RS
715
716@example
717@group
969fe9b5
RS
718 --- ---
719 | | |--> violet
720 --- ---
5b359918
RS
721 |
722 |
723 --> rose
724@end group
725@end example
726
ebc6903b
RS
727 You can combine dotted pair notation with list notation to represent
728conveniently a chain of cons cells with a non-@code{nil} final @sc{cdr}.
729You write a dot after the last element of the list, followed by the
730@sc{cdr} of the final cons cell. For example, @code{(rose violet
731. buttercup)} is equivalent to @code{(rose . (violet . buttercup))}.
732The object looks like this:
5b359918
RS
733
734@example
735@group
969fe9b5
RS
736 --- --- --- ---
737 | | |--> | | |--> buttercup
738 --- --- --- ---
5b359918
RS
739 | |
740 | |
741 --> rose --> violet
742@end group
743@end example
744
ebc6903b
RS
745 The syntax @code{(rose .@: violet .@: buttercup)} is invalid because
746there is nothing that it could mean. If anything, it would say to put
747@code{buttercup} in the @sc{cdr} of a cons cell whose @sc{cdr} is already
748used for @code{violet}.
5b359918 749
ebc6903b 750 The list @code{(rose violet)} is equivalent to @code{(rose . (violet))},
5b359918
RS
751and looks like this:
752
753@example
754@group
969fe9b5
RS
755 --- --- --- ---
756 | | |--> | | |--> nil
757 --- --- --- ---
5b359918
RS
758 | |
759 | |
760 --> rose --> violet
761@end group
762@end example
763
764 Similarly, the three-element list @code{(rose violet buttercup)}
765is equivalent to @code{(rose . (violet . (buttercup)))}.
766@ifinfo
767It looks like this:
768
769@example
770@group
969fe9b5
RS
771 --- --- --- --- --- ---
772 | | |--> | | |--> | | |--> nil
773 --- --- --- --- --- ---
5b359918
RS
774 | | |
775 | | |
776 --> rose --> violet --> buttercup
777@end group
778@end example
779@end ifinfo
780
781@node Association List Type
782@comment node-name, next, previous, up
783@subsubsection Association List Type
784
785 An @dfn{association list} or @dfn{alist} is a specially-constructed
786list whose elements are cons cells. In each element, the @sc{car} is
787considered a @dfn{key}, and the @sc{cdr} is considered an
788@dfn{associated value}. (In some cases, the associated value is stored
789in the @sc{car} of the @sc{cdr}.) Association lists are often used as
790stacks, since it is easy to add or remove associations at the front of
791the list.
792
793 For example,
794
795@example
796(setq alist-of-colors
797 '((rose . red) (lily . white) (buttercup . yellow)))
798@end example
799
800@noindent
801sets the variable @code{alist-of-colors} to an alist of three elements. In the
802first element, @code{rose} is the key and @code{red} is the value.
803
804 @xref{Association Lists}, for a further explanation of alists and for
8241495d
RS
805functions that work on alists. @xref{Hash Tables}, for another kind of
806lookup table, which is much faster for handling a large number of keys.
5b359918
RS
807
808@node Array Type
809@subsection Array Type
810
811 An @dfn{array} is composed of an arbitrary number of slots for
b6954afd 812holding or referring to other Lisp objects, arranged in a contiguous block of
969fe9b5
RS
813memory. Accessing any element of an array takes approximately the same
814amount of time. In contrast, accessing an element of a list requires
815time proportional to the position of the element in the list. (Elements
816at the end of a list take longer to access than elements at the
817beginning of a list.)
818
819 Emacs defines four types of array: strings, vectors, bool-vectors, and
820char-tables.
821
822 A string is an array of characters and a vector is an array of
823arbitrary objects. A bool-vector can hold only @code{t} or @code{nil}.
824These kinds of array may have any length up to the largest integer.
825Char-tables are sparse arrays indexed by any valid character code; they
826can hold arbitrary objects.
827
828 The first element of an array has index zero, the second element has
829index 1, and so on. This is called @dfn{zero-origin} indexing. For
830example, an array of four elements has indices 0, 1, 2, @w{and 3}. The
831largest possible index value is one less than the length of the array.
832Once an array is created, its length is fixed.
833
834 All Emacs Lisp arrays are one-dimensional. (Most other programming
835languages support multidimensional arrays, but they are not essential;
836you can get the same effect with an array of arrays.) Each type of
837array has its own read syntax; see the following sections for details.
838
839 The array type is contained in the sequence type and
840contains the string type, the vector type, the bool-vector type, and the
841char-table type.
5b359918
RS
842
843@node String Type
844@subsection String Type
845
846 A @dfn{string} is an array of characters. Strings are used for many
847purposes in Emacs, as can be expected in a text editor; for example, as
848the names of Lisp symbols, as messages for the user, and to represent
849text extracted from buffers. Strings in Lisp are constants: evaluation
850of a string returns the same string.
851
f9f59935
RS
852 @xref{Strings and Characters}, for functions that operate on strings.
853
854@menu
855* Syntax for Strings::
856* Non-ASCII in Strings::
857* Nonprinting Characters::
858* Text Props and Strings::
859@end menu
860
861@node Syntax for Strings
862@subsubsection Syntax for Strings
863
5b359918
RS
864@cindex @samp{"} in strings
865@cindex double-quote in strings
866@cindex @samp{\} in strings
867@cindex backslash in strings
868 The read syntax for strings is a double-quote, an arbitrary number of
f9f59935
RS
869characters, and another double-quote, @code{"like this"}. To include a
870double-quote in a string, precede it with a backslash; thus, @code{"\""}
871is a string containing just a single double-quote character. Likewise,
872you can include a backslash by preceding it with another backslash, like
873this: @code{"this \\ is a single embedded backslash"}.
2b3fc6c3 874
f9f59935 875@cindex newline in strings
2b3fc6c3
RS
876 The newline character is not special in the read syntax for strings;
877if you write a new line between the double-quotes, it becomes a
878character in the string. But an escaped newline---one that is preceded
879by @samp{\}---does not become part of the string; i.e., the Lisp reader
f9f59935
RS
880ignores an escaped newline while reading a string. An escaped space
881@w{@samp{\ }} is likewise ignored.
5b359918
RS
882
883@example
884"It is useful to include newlines
885in documentation strings,
886but the newline is \
887ignored if escaped."
888 @result{} "It is useful to include newlines
889in documentation strings,
890but the newline is ignored if escaped."
891@end example
892
f9f59935
RS
893@node Non-ASCII in Strings
894@subsubsection Non-ASCII Characters in Strings
895
8241495d 896 You can include a non-@sc{ascii} international character in a string
f9f59935 897constant by writing it literally. There are two text representations
8241495d 898for non-@sc{ascii} characters in Emacs strings (and in buffers): unibyte
f9f59935 899and multibyte. If the string constant is read from a multibyte source,
969fe9b5
RS
900such as a multibyte buffer or string, or a file that would be visited as
901multibyte, then the character is read as a multibyte character, and that
902makes the string multibyte. If the string constant is read from a
903unibyte source, then the character is read as unibyte and that makes the
904string unibyte.
f9f59935
RS
905
906 You can also represent a multibyte non-@sc{ASCII} character with its
8241495d 907character code: use a hex escape, @samp{\x@var{nnnnnnn}}, with as many
f9f59935
RS
908digits as necessary. (Multibyte non-@sc{ASCII} character codes are all
909greater than 256.) Any character which is not a valid hex digit
b6954afd
RS
910terminates this construct. If the next character in the string could be
911interpreted as a hex digit, write @w{@samp{\ }} (backslash and space) to
912terminate the hex escape---for example, @w{@samp{\x8e0\ }} represents
913one character, @samp{a} with grave accent. @w{@samp{\ }} in a string
914constant is just like backslash-newline; it does not contribute any
915character to the string, but it does terminate the preceding hex escape.
f9f59935
RS
916
917 Using a multibyte hex escape forces the string to multibyte. You can
8241495d 918represent a unibyte non-@sc{ascii} character with its character code,
f9f59935
RS
919which must be in the range from 128 (0200 octal) to 255 (0377 octal).
920This forces a unibyte string.
921
922 @xref{Text Representations}, for more information about the two
923text representations.
924
925@node Nonprinting Characters
926@subsubsection Nonprinting Characters in Strings
927
f9f59935
RS
928 You can use the same backslash escape-sequences in a string constant
929as in character literals (but do not use the question mark that begins a
930character constant). For example, you can write a string containing the
a9f0a989
RS
931nonprinting characters tab and @kbd{C-a}, with commas and spaces between
932them, like this: @code{"\t, \C-a"}. @xref{Character Type}, for a
933description of the read syntax for characters.
934
935 However, not all of the characters you can write with backslash
936escape-sequences are valid in strings. The only control characters that
8241495d
RS
937a string can hold are the @sc{ascii} control characters. Strings do not
938distinguish case in @sc{ascii} control characters.
a9f0a989
RS
939
940 Properly speaking, strings cannot hold meta characters; but when a
941string is to be used as a key sequence, there is a special convention
8241495d 942that provides a way to represent meta versions of @sc{ascii} characters in a
a9f0a989
RS
943string. If you use the @samp{\M-} syntax to indicate a meta character
944in a string constant, this sets the
969fe9b5 945@tex
8241495d 946@math{2^{7}}
969fe9b5 947@end tex
f9f59935
RS
948@ifinfo
9492**7
950@end ifinfo
a9f0a989
RS
951bit of the character in the string. If the string is used in
952@code{define-key} or @code{lookup-key}, this numeric code is translated
953into the equivalent meta character. @xref{Character Type}.
954
955 Strings cannot hold characters that have the hyper, super, or alt
956modifiers.
f9f59935
RS
957
958@node Text Props and Strings
959@subsubsection Text Properties in Strings
960
961 A string can hold properties for the characters it contains, in
962addition to the characters themselves. This enables programs that copy
963text between strings and buffers to copy the text's properties with no
964special effort. @xref{Text Properties}, for an explanation of what text
965properties mean. Strings with text properties use a special read and
966print syntax:
5b359918
RS
967
968@example
969#("@var{characters}" @var{property-data}...)
970@end example
971
972@noindent
973where @var{property-data} consists of zero or more elements, in groups
974of three as follows:
975
976@example
977@var{beg} @var{end} @var{plist}
978@end example
979
980@noindent
981The elements @var{beg} and @var{end} are integers, and together specify
982a range of indices in the string; @var{plist} is the property list for
f9f59935 983that range. For example,
5b359918 984
f9f59935
RS
985@example
986#("foo bar" 0 3 (face bold) 3 4 nil 4 7 (face italic))
987@end example
988
989@noindent
990represents a string whose textual contents are @samp{foo bar}, in which
991the first three characters have a @code{face} property with value
992@code{bold}, and the last three have a @code{face} property with value
ebc6903b 993@code{italic}. (The fourth character has no text properties, so its
a9f0a989
RS
994property list is @code{nil}. It is not actually necessary to mention
995ranges with @code{nil} as the property list, since any characters not
996mentioned in any range will default to having no properties.)
5b359918
RS
997
998@node Vector Type
999@subsection Vector Type
1000
1001 A @dfn{vector} is a one-dimensional array of elements of any type. It
1002takes a constant amount of time to access any element of a vector. (In
1003a list, the access time of an element is proportional to the distance of
1004the element from the beginning of the list.)
1005
1006 The printed representation of a vector consists of a left square
1007bracket, the elements, and a right square bracket. This is also the
1008read syntax. Like numbers and strings, vectors are considered constants
1009for evaluation.
1010
1011@example
1012[1 "two" (three)] ; @r{A vector of three elements.}
1013 @result{} [1 "two" (three)]
1014@end example
1015
1016 @xref{Vectors}, for functions that work with vectors.
1017
f9f59935
RS
1018@node Char-Table Type
1019@subsection Char-Table Type
1020
1021 A @dfn{char-table} is a one-dimensional array of elements of any type,
1022indexed by character codes. Char-tables have certain extra features to
1023make them more useful for many jobs that involve assigning information
1024to character codes---for example, a char-table can have a parent to
1025inherit from, a default value, and a small number of extra slots to use for
1026special purposes. A char-table can also specify a single value for
1027a whole character set.
1028
1029 The printed representation of a char-table is like a vector
969fe9b5 1030except that there is an extra @samp{#^} at the beginning.
f9f59935
RS
1031
1032 @xref{Char-Tables}, for special functions to operate on char-tables.
969fe9b5
RS
1033Uses of char-tables include:
1034
1035@itemize @bullet
1036@item
1037Case tables (@pxref{Case Tables}).
1038
1039@item
1040Character category tables (@pxref{Categories}).
1041
1042@item
1043Display Tables (@pxref{Display Tables}).
1044
1045@item
1046Syntax tables (@pxref{Syntax Tables}).
1047@end itemize
f9f59935
RS
1048
1049@node Bool-Vector Type
1050@subsection Bool-Vector Type
1051
1052 A @dfn{bool-vector} is a one-dimensional array of elements that
1053must be @code{t} or @code{nil}.
1054
8241495d 1055 The printed representation of a bool-vector is like a string, except
f9f59935
RS
1056that it begins with @samp{#&} followed by the length. The string
1057constant that follows actually specifies the contents of the bool-vector
1058as a bitmap---each ``character'' in the string contains 8 bits, which
1059specify the next 8 elements of the bool-vector (1 stands for @code{t},
ebc6903b
RS
1060and 0 for @code{nil}). The least significant bits of the character
1061correspond to the lowest indices in the bool-vector. If the length is not a
a9f0a989
RS
1062multiple of 8, the printed representation shows extra elements, but
1063these extras really make no difference.
f9f59935
RS
1064
1065@example
1066(make-bool-vector 3 t)
a9f0a989 1067 @result{} #&3"\007"
f9f59935 1068(make-bool-vector 3 nil)
a9f0a989 1069 @result{} #&3"\0"
969fe9b5 1070;; @r{These are equal since only the first 3 bits are used.}
a9f0a989 1071(equal #&3"\377" #&3"\007")
969fe9b5 1072 @result{} t
f9f59935
RS
1073@end example
1074
8241495d
RS
1075@node Hash Table Type
1076@subsection Hash Table Type
1077
1078 A hash table is a very fast kind of lookup table, somewhat like an
1079alist in that it maps keys to corresponding values, but much faster.
1080Hash tables are a new feature in Emacs 21; they have no read syntax, and
1081print using hash notation. @xref{Hash Tables}.
1082
1083@example
1084(make-hash-table)
1085 @result{} #<hash-table 'eql nil 0/65 0x83af980>
1086@end example
1087
2b3fc6c3
RS
1088@node Function Type
1089@subsection Function Type
5b359918
RS
1090
1091 Just as functions in other programming languages are executable,
1092@dfn{Lisp function} objects are pieces of executable code. However,
1093functions in Lisp are primarily Lisp objects, and only secondarily the
1094text which represents them. These Lisp objects are lambda expressions:
1095lists whose first element is the symbol @code{lambda} (@pxref{Lambda
1096Expressions}).
1097
1098 In most programming languages, it is impossible to have a function
1099without a name. In Lisp, a function has no intrinsic name. A lambda
1100expression is also called an @dfn{anonymous function} (@pxref{Anonymous
1101Functions}). A named function in Lisp is actually a symbol with a valid
1102function in its function cell (@pxref{Defining Functions}).
1103
1104 Most of the time, functions are called when their names are written in
1105Lisp expressions in Lisp programs. However, you can construct or obtain
1106a function object at run time and then call it with the primitive
1107functions @code{funcall} and @code{apply}. @xref{Calling Functions}.
1108
2b3fc6c3
RS
1109@node Macro Type
1110@subsection Macro Type
5b359918
RS
1111
1112 A @dfn{Lisp macro} is a user-defined construct that extends the Lisp
1113language. It is represented as an object much like a function, but with
969fe9b5 1114different argument-passing semantics. A Lisp macro has the form of a
5b359918
RS
1115list whose first element is the symbol @code{macro} and whose @sc{cdr}
1116is a Lisp function object, including the @code{lambda} symbol.
1117
1118 Lisp macro objects are usually defined with the built-in
1119@code{defmacro} function, but any list that begins with @code{macro} is
1120a macro as far as Emacs is concerned. @xref{Macros}, for an explanation
1121of how to write a macro.
1122
f9f59935
RS
1123 @strong{Warning}: Lisp macros and keyboard macros (@pxref{Keyboard
1124Macros}) are entirely different things. When we use the word ``macro''
1125without qualification, we mean a Lisp macro, not a keyboard macro.
1126
5b359918
RS
1127@node Primitive Function Type
1128@subsection Primitive Function Type
1129@cindex special forms
1130
1131 A @dfn{primitive function} is a function callable from Lisp but
1132written in the C programming language. Primitive functions are also
1133called @dfn{subrs} or @dfn{built-in functions}. (The word ``subr'' is
1134derived from ``subroutine''.) Most primitive functions evaluate all
1135their arguments when they are called. A primitive function that does
1136not evaluate all its arguments is called a @dfn{special form}
1137(@pxref{Special Forms}).@refill
1138
1139 It does not matter to the caller of a function whether the function is
969fe9b5
RS
1140primitive. However, this does matter if you try to redefine a primitive
1141with a function written in Lisp. The reason is that the primitive
1142function may be called directly from C code. Calls to the redefined
1143function from Lisp will use the new definition, but calls from C code
1144may still use the built-in definition. Therefore, @strong{we discourage
1145redefinition of primitive functions}.
5b359918
RS
1146
1147 The term @dfn{function} refers to all Emacs functions, whether written
2b3fc6c3
RS
1148in Lisp or C. @xref{Function Type}, for information about the
1149functions written in Lisp.
5b359918
RS
1150
1151 Primitive functions have no read syntax and print in hash notation
1152with the name of the subroutine.
1153
1154@example
1155@group
1156(symbol-function 'car) ; @r{Access the function cell}
1157 ; @r{of the symbol.}
1158 @result{} #<subr car>
1159(subrp (symbol-function 'car)) ; @r{Is this a primitive function?}
1160 @result{} t ; @r{Yes.}
1161@end group
1162@end example
1163
1164@node Byte-Code Type
1165@subsection Byte-Code Function Type
1166
1167The byte compiler produces @dfn{byte-code function objects}.
1168Internally, a byte-code function object is much like a vector; however,
1169the evaluator handles this data type specially when it appears as a
1170function to be called. @xref{Byte Compilation}, for information about
1171the byte compiler.
1172
bfe721d1
KH
1173The printed representation and read syntax for a byte-code function
1174object is like that for a vector, with an additional @samp{#} before the
1175opening @samp{[}.
5b359918
RS
1176
1177@node Autoload Type
1178@subsection Autoload Type
1179
1180 An @dfn{autoload object} is a list whose first element is the symbol
8241495d
RS
1181@code{autoload}. It is stored as the function definition of a symbol,
1182where it serves as a placeholder for the real definition. The autoload
1183object says that the real definition is found in a file of Lisp code
1184that should be loaded when necessary. It contains the name of the file,
1185plus some other information about the real definition.
5b359918
RS
1186
1187 After the file has been loaded, the symbol should have a new function
1188definition that is not an autoload object. The new definition is then
1189called as if it had been there to begin with. From the user's point of
1190view, the function call works as expected, using the function definition
1191in the loaded file.
1192
1193 An autoload object is usually created with the function
1194@code{autoload}, which stores the object in the function cell of a
1195symbol. @xref{Autoload}, for more details.
1196
1197@node Editing Types
1198@section Editing Types
1199@cindex editing types
1200
a9f0a989 1201 The types in the previous section are used for general programming
969fe9b5
RS
1202purposes, and most of them are common to most Lisp dialects. Emacs Lisp
1203provides several additional data types for purposes connected with
1204editing.
5b359918
RS
1205
1206@menu
1207* Buffer Type:: The basic object of editing.
1208* Marker Type:: A position in a buffer.
1209* Window Type:: Buffers are displayed in windows.
1210* Frame Type:: Windows subdivide frames.
1211* Window Configuration Type:: Recording the way a frame is subdivided.
969fe9b5 1212* Frame Configuration Type:: Recording the status of all frames.
5b359918
RS
1213* Process Type:: A process running on the underlying OS.
1214* Stream Type:: Receive or send characters.
1215* Keymap Type:: What function a keystroke invokes.
5b359918
RS
1216* Overlay Type:: How an overlay is represented.
1217@end menu
1218
1219@node Buffer Type
1220@subsection Buffer Type
1221
1222 A @dfn{buffer} is an object that holds text that can be edited
1223(@pxref{Buffers}). Most buffers hold the contents of a disk file
1224(@pxref{Files}) so they can be edited, but some are used for other
1225purposes. Most buffers are also meant to be seen by the user, and
1226therefore displayed, at some time, in a window (@pxref{Windows}). But a
1227buffer need not be displayed in any window.
1228
1229 The contents of a buffer are much like a string, but buffers are not
1230used like strings in Emacs Lisp, and the available operations are
969fe9b5 1231different. For example, you can insert text efficiently into an
8241495d
RS
1232existing buffer, altering the buffer's contents, whereas ``inserting''
1233text into a string requires concatenating substrings, and the result is
1234an entirely new string object.
5b359918
RS
1235
1236 Each buffer has a designated position called @dfn{point}
1237(@pxref{Positions}). At any time, one buffer is the @dfn{current
1238buffer}. Most editing commands act on the contents of the current
2b3fc6c3
RS
1239buffer in the neighborhood of point. Many of the standard Emacs
1240functions manipulate or test the characters in the current buffer; a
1241whole chapter in this manual is devoted to describing these functions
1242(@pxref{Text}).
5b359918
RS
1243
1244 Several other data structures are associated with each buffer:
1245
1246@itemize @bullet
1247@item
1248a local syntax table (@pxref{Syntax Tables});
1249
1250@item
1251a local keymap (@pxref{Keymaps}); and,
1252
1253@item
969fe9b5 1254a list of buffer-local variable bindings (@pxref{Buffer-Local Variables}).
bfe721d1
KH
1255
1256@item
969fe9b5 1257overlays (@pxref{Overlays}).
bfe721d1
KH
1258
1259@item
1260text properties for the text in the buffer (@pxref{Text Properties}).
5b359918
RS
1261@end itemize
1262
1263@noindent
2b3fc6c3 1264The local keymap and variable list contain entries that individually
5b359918
RS
1265override global bindings or values. These are used to customize the
1266behavior of programs in different buffers, without actually changing the
1267programs.
1268
bfe721d1 1269 A buffer may be @dfn{indirect}, which means it shares the text
969fe9b5 1270of another buffer, but presents it differently. @xref{Indirect Buffers}.
bfe721d1
KH
1271
1272 Buffers have no read syntax. They print in hash notation, showing the
5b359918
RS
1273buffer name.
1274
1275@example
1276@group
1277(current-buffer)
1278 @result{} #<buffer objects.texi>
1279@end group
1280@end example
1281
1282@node Marker Type
1283@subsection Marker Type
1284
1285 A @dfn{marker} denotes a position in a specific buffer. Markers
1286therefore have two components: one for the buffer, and one for the
1287position. Changes in the buffer's text automatically relocate the
1288position value as necessary to ensure that the marker always points
1289between the same two characters in the buffer.
1290
1291 Markers have no read syntax. They print in hash notation, giving the
1292current character position and the name of the buffer.
1293
1294@example
1295@group
1296(point-marker)
1297 @result{} #<marker at 10779 in objects.texi>
1298@end group
1299@end example
1300
1301@xref{Markers}, for information on how to test, create, copy, and move
1302markers.
1303
1304@node Window Type
1305@subsection Window Type
1306
1307 A @dfn{window} describes the portion of the terminal screen that Emacs
1308uses to display a buffer. Every window has one associated buffer, whose
1309contents appear in the window. By contrast, a given buffer may appear
1310in one window, no window, or several windows.
1311
1312 Though many windows may exist simultaneously, at any time one window
1313is designated the @dfn{selected window}. This is the window where the
1314cursor is (usually) displayed when Emacs is ready for a command. The
1315selected window usually displays the current buffer, but this is not
1316necessarily the case.
1317
1318 Windows are grouped on the screen into frames; each window belongs to
1319one and only one frame. @xref{Frame Type}.
1320
1321 Windows have no read syntax. They print in hash notation, giving the
1322window number and the name of the buffer being displayed. The window
1323numbers exist to identify windows uniquely, since the buffer displayed
1324in any given window can change frequently.
1325
1326@example
1327@group
1328(selected-window)
1329 @result{} #<window 1 on objects.texi>
1330@end group
1331@end example
1332
1333 @xref{Windows}, for a description of the functions that work on windows.
1334
1335@node Frame Type
1336@subsection Frame Type
1337
a9f0a989 1338 A @dfn{frame} is a rectangle on the screen that contains one or more
5b359918
RS
1339Emacs windows. A frame initially contains a single main window (plus
1340perhaps a minibuffer window) which you can subdivide vertically or
1341horizontally into smaller windows.
1342
1343 Frames have no read syntax. They print in hash notation, giving the
1344frame's title, plus its address in core (useful to identify the frame
1345uniquely).
1346
1347@example
1348@group
1349(selected-frame)
a9f0a989 1350 @result{} #<frame emacs@@psilocin.gnu.org 0xdac80>
5b359918
RS
1351@end group
1352@end example
1353
1354 @xref{Frames}, for a description of the functions that work on frames.
1355
1356@node Window Configuration Type
1357@subsection Window Configuration Type
1358@cindex screen layout
1359
1360 A @dfn{window configuration} stores information about the positions,
1361sizes, and contents of the windows in a frame, so you can recreate the
1362same arrangement of windows later.
1363
9e2b495b
RS
1364 Window configurations do not have a read syntax; their print syntax
1365looks like @samp{#<window-configuration>}. @xref{Window
1366Configurations}, for a description of several functions related to
1367window configurations.
5b359918 1368
969fe9b5
RS
1369@node Frame Configuration Type
1370@subsection Frame Configuration Type
1371@cindex screen layout
1372
1373 A @dfn{frame configuration} stores information about the positions,
1374sizes, and contents of the windows in all frames. It is actually
1375a list whose @sc{car} is @code{frame-configuration} and whose
1376@sc{cdr} is an alist. Each alist element describes one frame,
1377which appears as the @sc{car} of that element.
1378
1379 @xref{Frame Configurations}, for a description of several functions
1380related to frame configurations.
1381
5b359918
RS
1382@node Process Type
1383@subsection Process Type
1384
1385 The word @dfn{process} usually means a running program. Emacs itself
1386runs in a process of this sort. However, in Emacs Lisp, a process is a
1387Lisp object that designates a subprocess created by the Emacs process.
1388Programs such as shells, GDB, ftp, and compilers, running in
1389subprocesses of Emacs, extend the capabilities of Emacs.
1390
1391 An Emacs subprocess takes textual input from Emacs and returns textual
1392output to Emacs for further manipulation. Emacs can also send signals
1393to the subprocess.
1394
1395 Process objects have no read syntax. They print in hash notation,
1396giving the name of the process:
1397
1398@example
1399@group
1400(process-list)
1401 @result{} (#<process shell>)
1402@end group
1403@end example
1404
1405@xref{Processes}, for information about functions that create, delete,
1406return information about, send input or signals to, and receive output
1407from processes.
1408
1409@node Stream Type
1410@subsection Stream Type
1411
1412 A @dfn{stream} is an object that can be used as a source or sink for
1413characters---either to supply characters for input or to accept them as
1414output. Many different types can be used this way: markers, buffers,
1415strings, and functions. Most often, input streams (character sources)
1416obtain characters from the keyboard, a buffer, or a file, and output
1417streams (character sinks) send characters to a buffer, such as a
1418@file{*Help*} buffer, or to the echo area.
1419
1420 The object @code{nil}, in addition to its other meanings, may be used
1421as a stream. It stands for the value of the variable
1422@code{standard-input} or @code{standard-output}. Also, the object
1423@code{t} as a stream specifies input using the minibuffer
1424(@pxref{Minibuffers}) or output in the echo area (@pxref{The Echo
1425Area}).
1426
1427 Streams have no special printed representation or read syntax, and
1428print as whatever primitive type they are.
1429
3e099569 1430 @xref{Read and Print}, for a description of functions
2b3fc6c3 1431related to streams, including parsing and printing functions.
5b359918
RS
1432
1433@node Keymap Type
1434@subsection Keymap Type
1435
1436 A @dfn{keymap} maps keys typed by the user to commands. This mapping
1437controls how the user's command input is executed. A keymap is actually
1438a list whose @sc{car} is the symbol @code{keymap}.
1439
1440 @xref{Keymaps}, for information about creating keymaps, handling prefix
1441keys, local as well as global keymaps, and changing key bindings.
1442
5b359918
RS
1443@node Overlay Type
1444@subsection Overlay Type
1445
f9f59935
RS
1446 An @dfn{overlay} specifies properties that apply to a part of a
1447buffer. Each overlay applies to a specified range of the buffer, and
1448contains a property list (a list whose elements are alternating property
1449names and values). Overlay properties are used to present parts of the
1450buffer temporarily in a different display style. Overlays have no read
1451syntax, and print in hash notation, giving the buffer name and range of
1452positions.
5b359918 1453
bfe721d1
KH
1454 @xref{Overlays}, for how to create and use overlays.
1455
8241495d
RS
1456@node Circular Objects
1457@section Read Syntax for Circular Objects
1458@cindex circular structure, read syntax
1459@cindex shared structure, read syntax
1460@cindex @samp{#@var{n}=} read syntax
1461@cindex @samp{#@var{n}#} read syntax
1462
1463 In Emacs 21, to represent shared or circular structure within a
1464complex of Lisp objects, you can use the reader constructs
1465@samp{#@var{n}=} and @samp{#@var{n}#}.
1466
1467 Use @code{#@var{n}=} before an object to label it for later reference;
1468subsequently, you can use @code{#@var{n}#} to refer the same object in
1469another place. Here, @var{n} is some integer. For example, here is how
1470to make a list in which the first element recurs as the third element:
1471
1472@example
1473(#1=(a) b #1#)
1474@end example
1475
1476@noindent
1477This differs from ordinary syntax such as this
1478
1479@example
1480((a) b (a))
1481@end example
1482
1483@noindent
1484which would result in a list whose first and third elements
1485look alike but are not the same Lisp object. This shows the difference:
1486
1487@example
1488(prog1 nil
1489 (setq x '(#1=(a) b #1#)))
1490(eq (nth 0 x) (nth 2 x))
1491 @result{} t
1492(setq x '((a) b (a)))
1493(eq (nth 0 x) (nth 2 x))
1494 @result{} nil
1495@end example
1496
1497 You can also use the same syntax to make a circular structure, which
1498appears as an ``element'' within itself. Here is an example:
1499
1500@example
1501#1=(a #1#)
1502@end example
1503
1504@noindent
1505This makes a list whose second element is the list itself.
1506Here's how you can see that it really works:
1507
1508@example
1509(prog1 nil
1510 (setq x '#1=(a #1#)))
1511(eq x (cadr x))
1512 @result{} t
1513@end example
1514
1515 The Lisp printer can produce this syntax to record circular and shared
1516structure in a Lisp object, if you bind the variable @code{print-circle}
1517to a non-@code{nil} value. @xref{Output Variables}.
1518
5b359918
RS
1519@node Type Predicates
1520@section Type Predicates
1521@cindex predicates
1522@cindex type checking
1523@kindex wrong-type-argument
1524
1525 The Emacs Lisp interpreter itself does not perform type checking on
1526the actual arguments passed to functions when they are called. It could
1527not do so, since function arguments in Lisp do not have declared data
1528types, as they do in other programming languages. It is therefore up to
1529the individual function to test whether each actual argument belongs to
1530a type that the function can use.
1531
1532 All built-in functions do check the types of their actual arguments
1533when appropriate, and signal a @code{wrong-type-argument} error if an
1534argument is of the wrong type. For example, here is what happens if you
2b3fc6c3 1535pass an argument to @code{+} that it cannot handle:
5b359918
RS
1536
1537@example
1538@group
1539(+ 2 'a)
f9f59935 1540 @error{} Wrong type argument: number-or-marker-p, a
5b359918
RS
1541@end group
1542@end example
1543
1544@cindex type predicates
1545@cindex testing types
22697dac
KH
1546 If you want your program to handle different types differently, you
1547must do explicit type checking. The most common way to check the type
1548of an object is to call a @dfn{type predicate} function. Emacs has a
1549type predicate for each type, as well as some predicates for
1550combinations of types.
5b359918 1551
22697dac
KH
1552 A type predicate function takes one argument; it returns @code{t} if
1553the argument belongs to the appropriate type, and @code{nil} otherwise.
1554Following a general Lisp convention for predicate functions, most type
1555predicates' names end with @samp{p}.
1556
1557 Here is an example which uses the predicates @code{listp} to check for
1558a list and @code{symbolp} to check for a symbol.
1559
1560@example
1561(defun add-on (x)
1562 (cond ((symbolp x)
1563 ;; If X is a symbol, put it on LIST.
1564 (setq list (cons x list)))
1565 ((listp x)
1566 ;; If X is a list, add its elements to LIST.
1567 (setq list (append x list)))
1568 (t
969fe9b5 1569 ;; We handle only symbols and lists.
22697dac
KH
1570 (error "Invalid argument %s in add-on" x))))
1571@end example
1572
1573 Here is a table of predefined type predicates, in alphabetical order,
5b359918
RS
1574with references to further information.
1575
1576@table @code
1577@item atom
1578@xref{List-related Predicates, atom}.
1579
1580@item arrayp
1581@xref{Array Functions, arrayp}.
1582
969fe9b5
RS
1583@item bool-vector-p
1584@xref{Bool-Vectors, bool-vector-p}.
1585
5b359918
RS
1586@item bufferp
1587@xref{Buffer Basics, bufferp}.
1588
1589@item byte-code-function-p
1590@xref{Byte-Code Type, byte-code-function-p}.
1591
1592@item case-table-p
969fe9b5 1593@xref{Case Tables, case-table-p}.
5b359918
RS
1594
1595@item char-or-string-p
1596@xref{Predicates for Strings, char-or-string-p}.
1597
969fe9b5
RS
1598@item char-table-p
1599@xref{Char-Tables, char-table-p}.
1600
5b359918
RS
1601@item commandp
1602@xref{Interactive Call, commandp}.
1603
1604@item consp
1605@xref{List-related Predicates, consp}.
1606
969fe9b5
RS
1607@item display-table-p
1608@xref{Display Tables, display-table-p}.
1609
5b359918
RS
1610@item floatp
1611@xref{Predicates on Numbers, floatp}.
1612
969fe9b5
RS
1613@item frame-configuration-p
1614@xref{Frame Configurations, frame-configuration-p}.
1615
5b359918
RS
1616@item frame-live-p
1617@xref{Deleting Frames, frame-live-p}.
1618
1619@item framep
1620@xref{Frames, framep}.
1621
f9f59935
RS
1622@item functionp
1623@xref{Functions, functionp}.
1624
5b359918
RS
1625@item integer-or-marker-p
1626@xref{Predicates on Markers, integer-or-marker-p}.
1627
1628@item integerp
1629@xref{Predicates on Numbers, integerp}.
1630
1631@item keymapp
1632@xref{Creating Keymaps, keymapp}.
1633
1634@item listp
1635@xref{List-related Predicates, listp}.
1636
1637@item markerp
1638@xref{Predicates on Markers, markerp}.
1639
2b3fc6c3
RS
1640@item wholenump
1641@xref{Predicates on Numbers, wholenump}.
5b359918
RS
1642
1643@item nlistp
1644@xref{List-related Predicates, nlistp}.
1645
1646@item numberp
1647@xref{Predicates on Numbers, numberp}.
1648
1649@item number-or-marker-p
1650@xref{Predicates on Markers, number-or-marker-p}.
1651
1652@item overlayp
1653@xref{Overlays, overlayp}.
1654
1655@item processp
1656@xref{Processes, processp}.
1657
1658@item sequencep
1659@xref{Sequence Functions, sequencep}.
1660
1661@item stringp
1662@xref{Predicates for Strings, stringp}.
1663
1664@item subrp
1665@xref{Function Cells, subrp}.
1666
1667@item symbolp
1668@xref{Symbols, symbolp}.
1669
1670@item syntax-table-p
1671@xref{Syntax Tables, syntax-table-p}.
1672
1673@item user-variable-p
1674@xref{Defining Variables, user-variable-p}.
1675
1676@item vectorp
1677@xref{Vectors, vectorp}.
1678
1679@item window-configuration-p
1680@xref{Window Configurations, window-configuration-p}.
1681
1682@item window-live-p
1683@xref{Deleting Windows, window-live-p}.
1684
1685@item windowp
1686@xref{Basic Windows, windowp}.
1687@end table
1688
22697dac
KH
1689 The most general way to check the type of an object is to call the
1690function @code{type-of}. Recall that each object belongs to one and
1691only one primitive type; @code{type-of} tells you which one (@pxref{Lisp
1692Data Types}). But @code{type-of} knows nothing about non-primitive
1693types. In most cases, it is more convenient to use type predicates than
1694@code{type-of}.
1695
1696@defun type-of object
1697This function returns a symbol naming the primitive type of
9e2b495b
RS
1698@var{object}. The value is one of the symbols @code{symbol},
1699@code{integer}, @code{float}, @code{string}, @code{cons}, @code{vector},
969fe9b5
RS
1700@code{char-table}, @code{bool-vector}, @code{subr},
1701@code{compiled-function}, @code{marker}, @code{overlay}, @code{window},
1702@code{buffer}, @code{frame}, @code{process}, or
9e2b495b 1703@code{window-configuration}.
22697dac
KH
1704
1705@example
1706(type-of 1)
1707 @result{} integer
1708(type-of 'nil)
1709 @result{} symbol
1710(type-of '()) ; @r{@code{()} is @code{nil}.}
1711 @result{} symbol
1712(type-of '(x))
1713 @result{} cons
1714@end example
1715@end defun
1716
5b359918
RS
1717@node Equality Predicates
1718@section Equality Predicates
1719@cindex equality
1720
1721 Here we describe two functions that test for equality between any two
1722objects. Other functions test equality between objects of specific
2b3fc6c3
RS
1723types, e.g., strings. For these predicates, see the appropriate chapter
1724describing the data type.
5b359918
RS
1725
1726@defun eq object1 object2
1727This function returns @code{t} if @var{object1} and @var{object2} are
1728the same object, @code{nil} otherwise. The ``same object'' means that a
1729change in one will be reflected by the same change in the other.
1730
1731@code{eq} returns @code{t} if @var{object1} and @var{object2} are
1732integers with the same value. Also, since symbol names are normally
1733unique, if the arguments are symbols with the same name, they are
1734@code{eq}. For other types (e.g., lists, vectors, strings), two
1735arguments with the same contents or elements are not necessarily
1736@code{eq} to each other: they are @code{eq} only if they are the same
1737object.
1738
5b359918
RS
1739@example
1740@group
1741(eq 'foo 'foo)
1742 @result{} t
1743@end group
1744
1745@group
1746(eq 456 456)
1747 @result{} t
1748@end group
1749
1750@group
1751(eq "asdf" "asdf")
1752 @result{} nil
1753@end group
1754
1755@group
1756(eq '(1 (2 (3))) '(1 (2 (3))))
1757 @result{} nil
1758@end group
1759
1760@group
1761(setq foo '(1 (2 (3))))
1762 @result{} (1 (2 (3)))
1763(eq foo foo)
1764 @result{} t
1765(eq foo '(1 (2 (3))))
1766 @result{} nil
1767@end group
1768
1769@group
1770(eq [(1 2) 3] [(1 2) 3])
1771 @result{} nil
1772@end group
1773
1774@group
1775(eq (point-marker) (point-marker))
1776 @result{} nil
1777@end group
1778@end example
1779
a9f0a989
RS
1780The @code{make-symbol} function returns an uninterned symbol, distinct
1781from the symbol that is used if you write the name in a Lisp expression.
1782Distinct symbols with the same name are not @code{eq}. @xref{Creating
1783Symbols}.
969fe9b5
RS
1784
1785@example
1786@group
1787(eq (make-symbol "foo") 'foo)
1788 @result{} nil
1789@end group
1790@end example
5b359918
RS
1791@end defun
1792
1793@defun equal object1 object2
1794This function returns @code{t} if @var{object1} and @var{object2} have
1795equal components, @code{nil} otherwise. Whereas @code{eq} tests if its
1796arguments are the same object, @code{equal} looks inside nonidentical
1797arguments to see if their elements are the same. So, if two objects are
1798@code{eq}, they are @code{equal}, but the converse is not always true.
1799
1800@example
1801@group
1802(equal 'foo 'foo)
1803 @result{} t
1804@end group
1805
1806@group
1807(equal 456 456)
1808 @result{} t
1809@end group
1810
1811@group
1812(equal "asdf" "asdf")
1813 @result{} t
1814@end group
1815@group
1816(eq "asdf" "asdf")
1817 @result{} nil
1818@end group
1819
1820@group
1821(equal '(1 (2 (3))) '(1 (2 (3))))
1822 @result{} t
1823@end group
1824@group
1825(eq '(1 (2 (3))) '(1 (2 (3))))
1826 @result{} nil
1827@end group
1828
1829@group
1830(equal [(1 2) 3] [(1 2) 3])
1831 @result{} t
1832@end group
1833@group
1834(eq [(1 2) 3] [(1 2) 3])
1835 @result{} nil
1836@end group
1837
1838@group
1839(equal (point-marker) (point-marker))
1840 @result{} t
1841@end group
1842
1843@group
1844(eq (point-marker) (point-marker))
1845 @result{} nil
1846@end group
1847@end example
1848
f9f59935
RS
1849Comparison of strings is case-sensitive, but does not take account of
1850text properties---it compares only the characters in the strings.
1851A unibyte string never equals a multibyte string unless the
8241495d 1852contents are entirely @sc{ascii} (@pxref{Text Representations}).
5b359918
RS
1853
1854@example
1855@group
1856(equal "asdf" "ASDF")
1857 @result{} nil
1858@end group
1859@end example
bfe721d1
KH
1860
1861Two distinct buffers are never @code{equal}, even if their contents
1862are the same.
5b359918
RS
1863@end defun
1864
1865 The test for equality is implemented recursively, and circular lists may
1866therefore cause infinite recursion (leading to an error).