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