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