]> code.delx.au - gnu-emacs/blob - doc/misc/cl.texi
Merge changes from emacs-23 branch.
[gnu-emacs] / doc / misc / cl.texi
1 \input texinfo @c -*-texinfo-*-
2 @setfilename ../../info/cl
3 @settitle Common Lisp Extensions
4
5 @copying
6 This file documents the GNU Emacs Common Lisp emulation package.
7
8 Copyright @copyright{} 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
9 2008, 2009, 2010 Free Software Foundation, Inc.
10
11 @quotation
12 Permission is granted to copy, distribute and/or modify this document
13 under the terms of the GNU Free Documentation License, Version 1.3 or
14 any later version published by the Free Software Foundation; with no
15 Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
16 and with the Back-Cover Texts as in (a) below. A copy of the license
17 is included in the section entitled ``GNU Free Documentation License''.
18
19 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
20 modify this GNU manual. Buying copies from the FSF supports it in
21 developing GNU and promoting software freedom.''
22 @end quotation
23 @end copying
24
25 @dircategory Emacs
26 @direntry
27 * CL: (cl). Partial Common Lisp support for Emacs Lisp.
28 @end direntry
29
30 @finalout
31
32 @titlepage
33 @sp 6
34 @center @titlefont{Common Lisp Extensions}
35 @sp 4
36 @center For GNU Emacs Lisp
37 @sp 1
38 @center Version 2.02
39 @sp 5
40 @center Dave Gillespie
41 @center daveg@@synaptics.com
42 @page
43 @vskip 0pt plus 1filll
44 @insertcopying
45 @end titlepage
46
47 @contents
48
49 @node Top, Overview, (dir), (dir)
50 @chapter Introduction
51
52 @noindent
53 This document describes a set of Emacs Lisp facilities borrowed from
54 Common Lisp. All the facilities are described here in detail. While
55 this document does not assume any prior knowledge of Common Lisp, it
56 does assume a basic familiarity with Emacs Lisp.
57
58 @ifnottex
59 @insertcopying
60 @end ifnottex
61
62 @menu
63 * Overview:: Installation, usage, etc.
64 * Program Structure:: Arglists, `eval-when', `defalias'
65 * Predicates:: `typep' and `equalp'
66 * Control Structure:: `setf', `do', `loop', etc.
67 * Macros:: Destructuring, `define-compiler-macro'
68 * Declarations:: `proclaim', `declare', etc.
69 * Symbols:: Property lists, `gensym'
70 * Numbers:: Predicates, functions, random numbers
71 * Sequences:: Mapping, functions, searching, sorting
72 * Lists:: `caddr', `sublis', `member*', `assoc*', etc.
73 * Structures:: `defstruct'
74 * Assertions:: `check-type', `assert', `ignore-errors'.
75
76 * Efficiency Concerns:: Hints and techniques
77 * Common Lisp Compatibility:: All known differences with Steele
78 * Old CL Compatibility:: All known differences with old cl.el
79 * Porting Common Lisp:: Hints for porting Common Lisp code
80
81 * GNU Free Documentation License:: The license for this documentation.
82 * Function Index::
83 * Variable Index::
84 @end menu
85
86 @node Overview, Program Structure, Top, Top
87 @ifnottex
88 @chapter Overview
89 @end ifnottex
90
91 @noindent
92 Common Lisp is a huge language, and Common Lisp systems tend to be
93 massive and extremely complex. Emacs Lisp, by contrast, is rather
94 minimalist in the choice of Lisp features it offers the programmer.
95 As Emacs Lisp programmers have grown in number, and the applications
96 they write have grown more ambitious, it has become clear that Emacs
97 Lisp could benefit from many of the conveniences of Common Lisp.
98
99 The @dfn{CL} package adds a number of Common Lisp functions and
100 control structures to Emacs Lisp. While not a 100% complete
101 implementation of Common Lisp, @dfn{CL} adds enough functionality
102 to make Emacs Lisp programming significantly more convenient.
103
104 @strong{Please note:} the @dfn{CL} functions are not standard parts of
105 the Emacs Lisp name space, so it is legitimate for users to define
106 them with other, conflicting meanings. To avoid conflicting with
107 those user activities, we have a policy that packages installed in
108 Emacs must not load @dfn{CL} at run time. (It is ok for them to load
109 @dfn{CL} at compile time only, with @code{eval-when-compile}, and use
110 the macros it provides.) If you are writing packages that you plan to
111 distribute and invite widespread use for, you might want to observe
112 the same rule.
113
114 Some Common Lisp features have been omitted from this package
115 for various reasons:
116
117 @itemize @bullet
118 @item
119 Some features are too complex or bulky relative to their benefit
120 to Emacs Lisp programmers. CLOS and Common Lisp streams are fine
121 examples of this group.
122
123 @item
124 Other features cannot be implemented without modification to the
125 Emacs Lisp interpreter itself, such as multiple return values,
126 lexical scoping, case-insensitive symbols, and complex numbers.
127 The @dfn{CL} package generally makes no attempt to emulate these
128 features.
129
130 @item
131 Some features conflict with existing things in Emacs Lisp. For
132 example, Emacs' @code{assoc} function is incompatible with the
133 Common Lisp @code{assoc}. In such cases, this package usually
134 adds the suffix @samp{*} to the function name of the Common
135 Lisp version of the function (e.g., @code{assoc*}).
136 @end itemize
137
138 The package described here was written by Dave Gillespie,
139 @file{daveg@@synaptics.com}. It is a total rewrite of the original
140 1986 @file{cl.el} package by Cesar Quiroz. Most features of the
141 Quiroz package have been retained; any incompatibilities are
142 noted in the descriptions below. Care has been taken in this
143 version to ensure that each function is defined efficiently,
144 concisely, and with minimal impact on the rest of the Emacs
145 environment.
146
147 @menu
148 * Usage:: How to use the CL package
149 * Organization:: The package's five component files
150 * Installation:: Compiling and installing CL
151 * Naming Conventions:: Notes on CL function names
152 @end menu
153
154 @node Usage, Organization, Overview, Overview
155 @section Usage
156
157 @noindent
158 Lisp code that uses features from the @dfn{CL} package should
159 include at the beginning:
160
161 @example
162 (require 'cl)
163 @end example
164
165 @noindent
166 It is safe to arrange to load @dfn{CL} at all times, e.g.,
167 in your @file{.emacs} file. But it's a good idea, for portability,
168 to @code{(require 'cl)} in your code even if you do this.
169
170 @node Organization, Installation, Usage, Overview
171 @section Organization
172
173 @noindent
174 The Common Lisp package is organized into four files:
175
176 @table @file
177 @item cl.el
178 This is the ``main'' file, which contains basic functions
179 and information about the package. This file is relatively
180 compact---about 700 lines.
181
182 @item cl-extra.el
183 This file contains the larger, more complex or unusual functions.
184 It is kept separate so that packages which only want to use Common
185 Lisp fundamentals like the @code{cadr} function won't need to pay
186 the overhead of loading the more advanced functions.
187
188 @item cl-seq.el
189 This file contains most of the advanced functions for operating
190 on sequences or lists, such as @code{delete-if} and @code{assoc*}.
191
192 @item cl-macs.el
193 This file contains the features of the packages which are macros
194 instead of functions. Macros expand when the caller is compiled,
195 not when it is run, so the macros generally only need to be
196 present when the byte-compiler is running (or when the macros are
197 used in uncompiled code such as a @file{.emacs} file). Most of
198 the macros of this package are isolated in @file{cl-macs.el} so
199 that they won't take up memory unless you are compiling.
200 @end table
201
202 The file @file{cl.el} includes all necessary @code{autoload}
203 commands for the functions and macros in the other three files.
204 All you have to do is @code{(require 'cl)}, and @file{cl.el}
205 will take care of pulling in the other files when they are
206 needed.
207
208 There is another file, @file{cl-compat.el}, which defines some
209 routines from the older @file{cl.el} package that are not otherwise
210 present in the new package. This includes internal routines
211 like @code{setelt} and @code{zip-lists}, deprecated features
212 like @code{defkeyword}, and an emulation of the old-style
213 multiple-values feature. This file is obsolete and should not be used
214 in new code. @xref{Old CL Compatibility}.
215
216 @node Installation, Naming Conventions, Organization, Overview
217 @section Installation
218
219 @noindent
220 The @dfn{CL} package is distributed with Emacs, so there is no need
221 to install anything.
222
223 If you do need to install it, just put the byte-compiled files
224 @file{cl.elc}, @file{cl-extra.elc}, @file{cl-seq.elc},
225 @file{cl-macs.elc}, and (if necessary) @file{cl-compat.elc} into a
226 directory on your @code{load-path}. Also, format the @file{cl.texi}
227 file and put the resulting Info files into a directory in your
228 @code{Info-directory-list}.
229
230 @node Naming Conventions, , Installation, Overview
231 @section Naming Conventions
232
233 @noindent
234 Except where noted, all functions defined by this package have the
235 same names and calling conventions as their Common Lisp counterparts.
236
237 Following is a complete list of functions whose names were changed
238 from Common Lisp, usually to avoid conflicts with Emacs. In each
239 case, a @samp{*} has been appended to the Common Lisp name to obtain
240 the Emacs name:
241
242 @example
243 defun* defsubst* defmacro* function*
244 member* assoc* rassoc* get*
245 remove* delete* mapcar* sort*
246 floor* ceiling* truncate* round*
247 mod* rem* random*
248 @end example
249
250 Internal function and variable names in the package are prefixed
251 by @code{cl-}. Here is a complete list of functions @emph{not}
252 prefixed by @code{cl-} which were not taken from Common Lisp:
253
254 @example
255 floatp-safe lexical-let lexical-let*
256 callf callf2 letf letf*
257 defsubst*
258 @end example
259
260 The following simple functions and macros are defined in @file{cl.el};
261 they do not cause other components like @file{cl-extra} to be loaded.
262
263 @example
264 floatp-safe endp
265 evenp oddp plusp minusp
266 caaar .. cddddr
267 list* ldiff rest first .. tenth
268 copy-list subst mapcar* [2]
269 adjoin [3] acons pairlis pop [4]
270 push [4] pushnew [3,4] incf [4] decf [4]
271 proclaim declaim
272 @end example
273
274 @noindent
275 [2] Only for one sequence argument or two list arguments.
276
277 @noindent
278 [3] Only if @code{:test} is @code{eq}, @code{equal}, or unspecified,
279 and @code{:key} is not used.
280
281 @noindent
282 [4] Only when @var{place} is a plain variable name.
283
284 @iftex
285 @chapno=4
286 @end iftex
287
288 @node Program Structure, Predicates, Overview, Top
289 @chapter Program Structure
290
291 @noindent
292 This section describes features of the @dfn{CL} package which have to
293 do with programs as a whole: advanced argument lists for functions,
294 and the @code{eval-when} construct.
295
296 @menu
297 * Argument Lists:: `&key', `&aux', `defun*', `defmacro*'.
298 * Time of Evaluation:: The `eval-when' construct.
299 @end menu
300
301 @iftex
302 @secno=1
303 @end iftex
304
305 @node Argument Lists, Time of Evaluation, Program Structure, Program Structure
306 @section Argument Lists
307
308 @noindent
309 Emacs Lisp's notation for argument lists of functions is a subset of
310 the Common Lisp notation. As well as the familiar @code{&optional}
311 and @code{&rest} markers, Common Lisp allows you to specify default
312 values for optional arguments, and it provides the additional markers
313 @code{&key} and @code{&aux}.
314
315 Since argument parsing is built-in to Emacs, there is no way for
316 this package to implement Common Lisp argument lists seamlessly.
317 Instead, this package defines alternates for several Lisp forms
318 which you must use if you need Common Lisp argument lists.
319
320 @defspec defun* name arglist body...
321 This form is identical to the regular @code{defun} form, except
322 that @var{arglist} is allowed to be a full Common Lisp argument
323 list. Also, the function body is enclosed in an implicit block
324 called @var{name}; @pxref{Blocks and Exits}.
325 @end defspec
326
327 @defspec defsubst* name arglist body...
328 This is just like @code{defun*}, except that the function that
329 is defined is automatically proclaimed @code{inline}, i.e.,
330 calls to it may be expanded into in-line code by the byte compiler.
331 This is analogous to the @code{defsubst} form;
332 @code{defsubst*} uses a different method (compiler macros) which
333 works in all versions of Emacs, and also generates somewhat more
334 efficient inline expansions. In particular, @code{defsubst*}
335 arranges for the processing of keyword arguments, default values,
336 etc., to be done at compile-time whenever possible.
337 @end defspec
338
339 @defspec defmacro* name arglist body...
340 This is identical to the regular @code{defmacro} form,
341 except that @var{arglist} is allowed to be a full Common Lisp
342 argument list. The @code{&environment} keyword is supported as
343 described in Steele. The @code{&whole} keyword is supported only
344 within destructured lists (see below); top-level @code{&whole}
345 cannot be implemented with the current Emacs Lisp interpreter.
346 The macro expander body is enclosed in an implicit block called
347 @var{name}.
348 @end defspec
349
350 @defspec function* symbol-or-lambda
351 This is identical to the regular @code{function} form,
352 except that if the argument is a @code{lambda} form then that
353 form may use a full Common Lisp argument list.
354 @end defspec
355
356 Also, all forms (such as @code{defsetf} and @code{flet}) defined
357 in this package that include @var{arglist}s in their syntax allow
358 full Common Lisp argument lists.
359
360 Note that it is @emph{not} necessary to use @code{defun*} in
361 order to have access to most @dfn{CL} features in your function.
362 These features are always present; @code{defun*}'s only
363 difference from @code{defun} is its more flexible argument
364 lists and its implicit block.
365
366 The full form of a Common Lisp argument list is
367
368 @example
369 (@var{var}...
370 &optional (@var{var} @var{initform} @var{svar})...
371 &rest @var{var}
372 &key ((@var{keyword} @var{var}) @var{initform} @var{svar})...
373 &aux (@var{var} @var{initform})...)
374 @end example
375
376 Each of the five argument list sections is optional. The @var{svar},
377 @var{initform}, and @var{keyword} parts are optional; if they are
378 omitted, then @samp{(@var{var})} may be written simply @samp{@var{var}}.
379
380 The first section consists of zero or more @dfn{required} arguments.
381 These arguments must always be specified in a call to the function;
382 there is no difference between Emacs Lisp and Common Lisp as far as
383 required arguments are concerned.
384
385 The second section consists of @dfn{optional} arguments. These
386 arguments may be specified in the function call; if they are not,
387 @var{initform} specifies the default value used for the argument.
388 (No @var{initform} means to use @code{nil} as the default.) The
389 @var{initform} is evaluated with the bindings for the preceding
390 arguments already established; @code{(a &optional (b (1+ a)))}
391 matches one or two arguments, with the second argument defaulting
392 to one plus the first argument. If the @var{svar} is specified,
393 it is an auxiliary variable which is bound to @code{t} if the optional
394 argument was specified, or to @code{nil} if the argument was omitted.
395 If you don't use an @var{svar}, then there will be no way for your
396 function to tell whether it was called with no argument, or with
397 the default value passed explicitly as an argument.
398
399 The third section consists of a single @dfn{rest} argument. If
400 more arguments were passed to the function than are accounted for
401 by the required and optional arguments, those extra arguments are
402 collected into a list and bound to the ``rest'' argument variable.
403 Common Lisp's @code{&rest} is equivalent to that of Emacs Lisp.
404 Common Lisp accepts @code{&body} as a synonym for @code{&rest} in
405 macro contexts; this package accepts it all the time.
406
407 The fourth section consists of @dfn{keyword} arguments. These
408 are optional arguments which are specified by name rather than
409 positionally in the argument list. For example,
410
411 @example
412 (defun* foo (a &optional b &key c d (e 17)))
413 @end example
414
415 @noindent
416 defines a function which may be called with one, two, or more
417 arguments. The first two arguments are bound to @code{a} and
418 @code{b} in the usual way. The remaining arguments must be
419 pairs of the form @code{:c}, @code{:d}, or @code{:e} followed
420 by the value to be bound to the corresponding argument variable.
421 (Symbols whose names begin with a colon are called @dfn{keywords},
422 and they are self-quoting in the same way as @code{nil} and
423 @code{t}.)
424
425 For example, the call @code{(foo 1 2 :d 3 :c 4)} sets the five
426 arguments to 1, 2, 4, 3, and 17, respectively. If the same keyword
427 appears more than once in the function call, the first occurrence
428 takes precedence over the later ones. Note that it is not possible
429 to specify keyword arguments without specifying the optional
430 argument @code{b} as well, since @code{(foo 1 :c 2)} would bind
431 @code{b} to the keyword @code{:c}, then signal an error because
432 @code{2} is not a valid keyword.
433
434 You can also explicitly specify the keyword argument; it need not be
435 simply the variable name prefixed with a colon. For example,
436
437 @example
438 (defun* bar (&key (a 1) ((baz b) 4)))
439 @end example
440
441 @noindent
442
443 specifies a keyword @code{:a} that sets the variable @code{a} with
444 default value 1, as well as a keyword @code{baz} that sets the
445 variable @code{b} with default value 4. In this case, because
446 @code{baz} is not self-quoting, you must quote it explicitly in the
447 function call, like this:
448
449 @example
450 (bar :a 10 'baz 42)
451 @end example
452
453 Ordinarily, it is an error to pass an unrecognized keyword to
454 a function, e.g., @code{(foo 1 2 :c 3 :goober 4)}. You can ask
455 Lisp to ignore unrecognized keywords, either by adding the
456 marker @code{&allow-other-keys} after the keyword section
457 of the argument list, or by specifying an @code{:allow-other-keys}
458 argument in the call whose value is non-@code{nil}. If the
459 function uses both @code{&rest} and @code{&key} at the same time,
460 the ``rest'' argument is bound to the keyword list as it appears
461 in the call. For example:
462
463 @smallexample
464 (defun* find-thing (thing &rest rest &key need &allow-other-keys)
465 (or (apply 'member* thing thing-list :allow-other-keys t rest)
466 (if need (error "Thing not found"))))
467 @end smallexample
468
469 @noindent
470 This function takes a @code{:need} keyword argument, but also
471 accepts other keyword arguments which are passed on to the
472 @code{member*} function. @code{allow-other-keys} is used to
473 keep both @code{find-thing} and @code{member*} from complaining
474 about each others' keywords in the arguments.
475
476 The fifth section of the argument list consists of @dfn{auxiliary
477 variables}. These are not really arguments at all, but simply
478 variables which are bound to @code{nil} or to the specified
479 @var{initforms} during execution of the function. There is no
480 difference between the following two functions, except for a
481 matter of stylistic taste:
482
483 @example
484 (defun* foo (a b &aux (c (+ a b)) d)
485 @var{body})
486
487 (defun* foo (a b)
488 (let ((c (+ a b)) d)
489 @var{body}))
490 @end example
491
492 Argument lists support @dfn{destructuring}. In Common Lisp,
493 destructuring is only allowed with @code{defmacro}; this package
494 allows it with @code{defun*} and other argument lists as well.
495 In destructuring, any argument variable (@var{var} in the above
496 diagram) can be replaced by a list of variables, or more generally,
497 a recursive argument list. The corresponding argument value must
498 be a list whose elements match this recursive argument list.
499 For example:
500
501 @example
502 (defmacro* dolist ((var listform &optional resultform)
503 &rest body)
504 ...)
505 @end example
506
507 This says that the first argument of @code{dolist} must be a list
508 of two or three items; if there are other arguments as well as this
509 list, they are stored in @code{body}. All features allowed in
510 regular argument lists are allowed in these recursive argument lists.
511 In addition, the clause @samp{&whole @var{var}} is allowed at the
512 front of a recursive argument list. It binds @var{var} to the
513 whole list being matched; thus @code{(&whole all a b)} matches
514 a list of two things, with @code{a} bound to the first thing,
515 @code{b} bound to the second thing, and @code{all} bound to the
516 list itself. (Common Lisp allows @code{&whole} in top-level
517 @code{defmacro} argument lists as well, but Emacs Lisp does not
518 support this usage.)
519
520 One last feature of destructuring is that the argument list may be
521 dotted, so that the argument list @code{(a b . c)} is functionally
522 equivalent to @code{(a b &rest c)}.
523
524 If the optimization quality @code{safety} is set to 0
525 (@pxref{Declarations}), error checking for wrong number of
526 arguments and invalid keyword arguments is disabled. By default,
527 argument lists are rigorously checked.
528
529 @node Time of Evaluation, , Argument Lists, Program Structure
530 @section Time of Evaluation
531
532 @noindent
533 Normally, the byte-compiler does not actually execute the forms in
534 a file it compiles. For example, if a file contains @code{(setq foo t)},
535 the act of compiling it will not actually set @code{foo} to @code{t}.
536 This is true even if the @code{setq} was a top-level form (i.e., not
537 enclosed in a @code{defun} or other form). Sometimes, though, you
538 would like to have certain top-level forms evaluated at compile-time.
539 For example, the compiler effectively evaluates @code{defmacro} forms
540 at compile-time so that later parts of the file can refer to the
541 macros that are defined.
542
543 @defspec eval-when (situations...) forms...
544 This form controls when the body @var{forms} are evaluated.
545 The @var{situations} list may contain any set of the symbols
546 @code{compile}, @code{load}, and @code{eval} (or their long-winded
547 ANSI equivalents, @code{:compile-toplevel}, @code{:load-toplevel},
548 and @code{:execute}).
549
550 The @code{eval-when} form is handled differently depending on
551 whether or not it is being compiled as a top-level form.
552 Specifically, it gets special treatment if it is being compiled
553 by a command such as @code{byte-compile-file} which compiles files
554 or buffers of code, and it appears either literally at the
555 top level of the file or inside a top-level @code{progn}.
556
557 For compiled top-level @code{eval-when}s, the body @var{forms} are
558 executed at compile-time if @code{compile} is in the @var{situations}
559 list, and the @var{forms} are written out to the file (to be executed
560 at load-time) if @code{load} is in the @var{situations} list.
561
562 For non-compiled-top-level forms, only the @code{eval} situation is
563 relevant. (This includes forms executed by the interpreter, forms
564 compiled with @code{byte-compile} rather than @code{byte-compile-file},
565 and non-top-level forms.) The @code{eval-when} acts like a
566 @code{progn} if @code{eval} is specified, and like @code{nil}
567 (ignoring the body @var{forms}) if not.
568
569 The rules become more subtle when @code{eval-when}s are nested;
570 consult Steele (second edition) for the gruesome details (and
571 some gruesome examples).
572
573 Some simple examples:
574
575 @example
576 ;; Top-level forms in foo.el:
577 (eval-when (compile) (setq foo1 'bar))
578 (eval-when (load) (setq foo2 'bar))
579 (eval-when (compile load) (setq foo3 'bar))
580 (eval-when (eval) (setq foo4 'bar))
581 (eval-when (eval compile) (setq foo5 'bar))
582 (eval-when (eval load) (setq foo6 'bar))
583 (eval-when (eval compile load) (setq foo7 'bar))
584 @end example
585
586 When @file{foo.el} is compiled, these variables will be set during
587 the compilation itself:
588
589 @example
590 foo1 foo3 foo5 foo7 ; `compile'
591 @end example
592
593 When @file{foo.elc} is loaded, these variables will be set:
594
595 @example
596 foo2 foo3 foo6 foo7 ; `load'
597 @end example
598
599 And if @file{foo.el} is loaded uncompiled, these variables will
600 be set:
601
602 @example
603 foo4 foo5 foo6 foo7 ; `eval'
604 @end example
605
606 If these seven @code{eval-when}s had been, say, inside a @code{defun},
607 then the first three would have been equivalent to @code{nil} and the
608 last four would have been equivalent to the corresponding @code{setq}s.
609
610 Note that @code{(eval-when (load eval) @dots{})} is equivalent
611 to @code{(progn @dots{})} in all contexts. The compiler treats
612 certain top-level forms, like @code{defmacro} (sort-of) and
613 @code{require}, as if they were wrapped in @code{(eval-when
614 (compile load eval) @dots{})}.
615 @end defspec
616
617 Emacs includes two special forms related to @code{eval-when}.
618 One of these, @code{eval-when-compile}, is not quite equivalent to
619 any @code{eval-when} construct and is described below.
620
621 The other form, @code{(eval-and-compile @dots{})}, is exactly
622 equivalent to @samp{(eval-when (compile load eval) @dots{})} and
623 so is not itself defined by this package.
624
625 @defspec eval-when-compile forms...
626 The @var{forms} are evaluated at compile-time; at execution time,
627 this form acts like a quoted constant of the resulting value. Used
628 at top-level, @code{eval-when-compile} is just like @samp{eval-when
629 (compile eval)}. In other contexts, @code{eval-when-compile}
630 allows code to be evaluated once at compile-time for efficiency
631 or other reasons.
632
633 This form is similar to the @samp{#.} syntax of true Common Lisp.
634 @end defspec
635
636 @defspec load-time-value form
637 The @var{form} is evaluated at load-time; at execution time,
638 this form acts like a quoted constant of the resulting value.
639
640 Early Common Lisp had a @samp{#,} syntax that was similar to
641 this, but ANSI Common Lisp replaced it with @code{load-time-value}
642 and gave it more well-defined semantics.
643
644 In a compiled file, @code{load-time-value} arranges for @var{form}
645 to be evaluated when the @file{.elc} file is loaded and then used
646 as if it were a quoted constant. In code compiled by
647 @code{byte-compile} rather than @code{byte-compile-file}, the
648 effect is identical to @code{eval-when-compile}. In uncompiled
649 code, both @code{eval-when-compile} and @code{load-time-value}
650 act exactly like @code{progn}.
651
652 @example
653 (defun report ()
654 (insert "This function was executed on: "
655 (current-time-string)
656 ", compiled on: "
657 (eval-when-compile (current-time-string))
658 ;; or '#.(current-time-string) in real Common Lisp
659 ", and loaded on: "
660 (load-time-value (current-time-string))))
661 @end example
662
663 @noindent
664 Byte-compiled, the above defun will result in the following code
665 (or its compiled equivalent, of course) in the @file{.elc} file:
666
667 @example
668 (setq --temp-- (current-time-string))
669 (defun report ()
670 (insert "This function was executed on: "
671 (current-time-string)
672 ", compiled on: "
673 '"Wed Jun 23 18:33:43 1993"
674 ", and loaded on: "
675 --temp--))
676 @end example
677 @end defspec
678
679 @node Predicates, Control Structure, Program Structure, Top
680 @chapter Predicates
681
682 @noindent
683 This section describes functions for testing whether various
684 facts are true or false.
685
686 @menu
687 * Type Predicates:: `typep', `deftype', and `coerce'
688 * Equality Predicates:: `equalp'
689 @end menu
690
691 @node Type Predicates, Equality Predicates, Predicates, Predicates
692 @section Type Predicates
693
694 @noindent
695 The @dfn{CL} package defines a version of the Common Lisp @code{typep}
696 predicate.
697
698 @defun typep object type
699 Check if @var{object} is of type @var{type}, where @var{type} is a
700 (quoted) type name of the sort used by Common Lisp. For example,
701 @code{(typep foo 'integer)} is equivalent to @code{(integerp foo)}.
702 @end defun
703
704 The @var{type} argument to the above function is either a symbol
705 or a list beginning with a symbol.
706
707 @itemize @bullet
708 @item
709 If the type name is a symbol, Emacs appends @samp{-p} to the
710 symbol name to form the name of a predicate function for testing
711 the type. (Built-in predicates whose names end in @samp{p} rather
712 than @samp{-p} are used when appropriate.)
713
714 @item
715 The type symbol @code{t} stands for the union of all types.
716 @code{(typep @var{object} t)} is always true. Likewise, the
717 type symbol @code{nil} stands for nothing at all, and
718 @code{(typep @var{object} nil)} is always false.
719
720 @item
721 The type symbol @code{null} represents the symbol @code{nil}.
722 Thus @code{(typep @var{object} 'null)} is equivalent to
723 @code{(null @var{object})}.
724
725 @item
726 The type symbol @code{atom} represents all objects that are not cons
727 cells. Thus @code{(typep @var{object} 'atom)} is equivalent to
728 @code{(atom @var{object})}.
729
730 @item
731 The type symbol @code{real} is a synonym for @code{number}, and
732 @code{fixnum} is a synonym for @code{integer}.
733
734 @item
735 The type symbols @code{character} and @code{string-char} match
736 integers in the range from 0 to 255.
737
738 @item
739 The type symbol @code{float} uses the @code{floatp-safe} predicate
740 defined by this package rather than @code{floatp}, so it will work
741 correctly even in Emacs versions without floating-point support.
742
743 @item
744 The type list @code{(integer @var{low} @var{high})} represents all
745 integers between @var{low} and @var{high}, inclusive. Either bound
746 may be a list of a single integer to specify an exclusive limit,
747 or a @code{*} to specify no limit. The type @code{(integer * *)}
748 is thus equivalent to @code{integer}.
749
750 @item
751 Likewise, lists beginning with @code{float}, @code{real}, or
752 @code{number} represent numbers of that type falling in a particular
753 range.
754
755 @item
756 Lists beginning with @code{and}, @code{or}, and @code{not} form
757 combinations of types. For example, @code{(or integer (float 0 *))}
758 represents all objects that are integers or non-negative floats.
759
760 @item
761 Lists beginning with @code{member} or @code{member*} represent
762 objects @code{eql} to any of the following values. For example,
763 @code{(member 1 2 3 4)} is equivalent to @code{(integer 1 4)},
764 and @code{(member nil)} is equivalent to @code{null}.
765
766 @item
767 Lists of the form @code{(satisfies @var{predicate})} represent
768 all objects for which @var{predicate} returns true when called
769 with that object as an argument.
770 @end itemize
771
772 The following function and macro (not technically predicates) are
773 related to @code{typep}.
774
775 @defun coerce object type
776 This function attempts to convert @var{object} to the specified
777 @var{type}. If @var{object} is already of that type as determined by
778 @code{typep}, it is simply returned. Otherwise, certain types of
779 conversions will be made: If @var{type} is any sequence type
780 (@code{string}, @code{list}, etc.) then @var{object} will be
781 converted to that type if possible. If @var{type} is
782 @code{character}, then strings of length one and symbols with
783 one-character names can be coerced. If @var{type} is @code{float},
784 then integers can be coerced in versions of Emacs that support
785 floats. In all other circumstances, @code{coerce} signals an
786 error.
787 @end defun
788
789 @defspec deftype name arglist forms...
790 This macro defines a new type called @var{name}. It is similar
791 to @code{defmacro} in many ways; when @var{name} is encountered
792 as a type name, the body @var{forms} are evaluated and should
793 return a type specifier that is equivalent to the type. The
794 @var{arglist} is a Common Lisp argument list of the sort accepted
795 by @code{defmacro*}. The type specifier @samp{(@var{name} @var{args}...)}
796 is expanded by calling the expander with those arguments; the type
797 symbol @samp{@var{name}} is expanded by calling the expander with
798 no arguments. The @var{arglist} is processed the same as for
799 @code{defmacro*} except that optional arguments without explicit
800 defaults use @code{*} instead of @code{nil} as the ``default''
801 default. Some examples:
802
803 @example
804 (deftype null () '(satisfies null)) ; predefined
805 (deftype list () '(or null cons)) ; predefined
806 (deftype unsigned-byte (&optional bits)
807 (list 'integer 0 (if (eq bits '*) bits (1- (lsh 1 bits)))))
808 (unsigned-byte 8) @equiv{} (integer 0 255)
809 (unsigned-byte) @equiv{} (integer 0 *)
810 unsigned-byte @equiv{} (integer 0 *)
811 @end example
812
813 @noindent
814 The last example shows how the Common Lisp @code{unsigned-byte}
815 type specifier could be implemented if desired; this package does
816 not implement @code{unsigned-byte} by default.
817 @end defspec
818
819 The @code{typecase} and @code{check-type} macros also use type
820 names. @xref{Conditionals}. @xref{Assertions}. The @code{map},
821 @code{concatenate}, and @code{merge} functions take type-name
822 arguments to specify the type of sequence to return. @xref{Sequences}.
823
824 @node Equality Predicates, , Type Predicates, Predicates
825 @section Equality Predicates
826
827 @noindent
828 This package defines the Common Lisp predicate @code{equalp}.
829
830 @defun equalp a b
831 This function is a more flexible version of @code{equal}. In
832 particular, it compares strings case-insensitively, and it compares
833 numbers without regard to type (so that @code{(equalp 3 3.0)} is
834 true). Vectors and conses are compared recursively. All other
835 objects are compared as if by @code{equal}.
836
837 This function differs from Common Lisp @code{equalp} in several
838 respects. First, Common Lisp's @code{equalp} also compares
839 @emph{characters} case-insensitively, which would be impractical
840 in this package since Emacs does not distinguish between integers
841 and characters. In keeping with the idea that strings are less
842 vector-like in Emacs Lisp, this package's @code{equalp} also will
843 not compare strings against vectors of integers.
844 @end defun
845
846 Also note that the Common Lisp functions @code{member} and @code{assoc}
847 use @code{eql} to compare elements, whereas Emacs Lisp follows the
848 MacLisp tradition and uses @code{equal} for these two functions.
849 In Emacs, use @code{member*} and @code{assoc*} to get functions
850 which use @code{eql} for comparisons.
851
852 @node Control Structure, Macros, Predicates, Top
853 @chapter Control Structure
854
855 @noindent
856 The features described in the following sections implement
857 various advanced control structures, including the powerful
858 @code{setf} facility and a number of looping and conditional
859 constructs.
860
861 @menu
862 * Assignment:: The `psetq' form
863 * Generalized Variables:: `setf', `incf', `push', etc.
864 * Variable Bindings:: `progv', `lexical-let', `flet', `macrolet'
865 * Conditionals:: `case', `typecase'
866 * Blocks and Exits:: `block', `return', `return-from'
867 * Iteration:: `do', `dotimes', `dolist', `do-symbols'
868 * Loop Facility:: The Common Lisp `loop' macro
869 * Multiple Values:: `values', `multiple-value-bind', etc.
870 @end menu
871
872 @node Assignment, Generalized Variables, Control Structure, Control Structure
873 @section Assignment
874
875 @noindent
876 The @code{psetq} form is just like @code{setq}, except that multiple
877 assignments are done in parallel rather than sequentially.
878
879 @defspec psetq [symbol form]@dots{}
880 This special form (actually a macro) is used to assign to several
881 variables simultaneously. Given only one @var{symbol} and @var{form},
882 it has the same effect as @code{setq}. Given several @var{symbol}
883 and @var{form} pairs, it evaluates all the @var{form}s in advance
884 and then stores the corresponding variables afterwards.
885
886 @example
887 (setq x 2 y 3)
888 (setq x (+ x y) y (* x y))
889 x
890 @result{} 5
891 y ; @r{@code{y} was computed after @code{x} was set.}
892 @result{} 15
893 (setq x 2 y 3)
894 (psetq x (+ x y) y (* x y))
895 x
896 @result{} 5
897 y ; @r{@code{y} was computed before @code{x} was set.}
898 @result{} 6
899 @end example
900
901 The simplest use of @code{psetq} is @code{(psetq x y y x)}, which
902 exchanges the values of two variables. (The @code{rotatef} form
903 provides an even more convenient way to swap two variables;
904 @pxref{Modify Macros}.)
905
906 @code{psetq} always returns @code{nil}.
907 @end defspec
908
909 @node Generalized Variables, Variable Bindings, Assignment, Control Structure
910 @section Generalized Variables
911
912 @noindent
913 A ``generalized variable'' or ``place form'' is one of the many places
914 in Lisp memory where values can be stored. The simplest place form is
915 a regular Lisp variable. But the cars and cdrs of lists, elements
916 of arrays, properties of symbols, and many other locations are also
917 places where Lisp values are stored.
918
919 The @code{setf} form is like @code{setq}, except that it accepts
920 arbitrary place forms on the left side rather than just
921 symbols. For example, @code{(setf (car a) b)} sets the car of
922 @code{a} to @code{b}, doing the same operation as @code{(setcar a b)}
923 but without having to remember two separate functions for setting
924 and accessing every type of place.
925
926 Generalized variables are analogous to ``lvalues'' in the C
927 language, where @samp{x = a[i]} gets an element from an array
928 and @samp{a[i] = x} stores an element using the same notation.
929 Just as certain forms like @code{a[i]} can be lvalues in C, there
930 is a set of forms that can be generalized variables in Lisp.
931
932 @menu
933 * Basic Setf:: `setf' and place forms
934 * Modify Macros:: `incf', `push', `rotatef', `letf', `callf', etc.
935 * Customizing Setf:: `define-modify-macro', `defsetf', `define-setf-method'
936 @end menu
937
938 @node Basic Setf, Modify Macros, Generalized Variables, Generalized Variables
939 @subsection Basic Setf
940
941 @noindent
942 The @code{setf} macro is the most basic way to operate on generalized
943 variables.
944
945 @defspec setf [place form]@dots{}
946 This macro evaluates @var{form} and stores it in @var{place}, which
947 must be a valid generalized variable form. If there are several
948 @var{place} and @var{form} pairs, the assignments are done sequentially
949 just as with @code{setq}. @code{setf} returns the value of the last
950 @var{form}.
951
952 The following Lisp forms will work as generalized variables, and
953 so may appear in the @var{place} argument of @code{setf}:
954
955 @itemize @bullet
956 @item
957 A symbol naming a variable. In other words, @code{(setf x y)} is
958 exactly equivalent to @code{(setq x y)}, and @code{setq} itself is
959 strictly speaking redundant now that @code{setf} exists. Many
960 programmers continue to prefer @code{setq} for setting simple
961 variables, though, purely for stylistic or historical reasons.
962 The macro @code{(setf x y)} actually expands to @code{(setq x y)},
963 so there is no performance penalty for using it in compiled code.
964
965 @item
966 A call to any of the following Lisp functions:
967
968 @smallexample
969 car cdr caar .. cddddr
970 nth rest first .. tenth
971 aref elt nthcdr
972 symbol-function symbol-value symbol-plist
973 get get* getf
974 gethash subseq
975 @end smallexample
976
977 @noindent
978 Note that for @code{nthcdr} and @code{getf}, the list argument
979 of the function must itself be a valid @var{place} form. For
980 example, @code{(setf (nthcdr 0 foo) 7)} will set @code{foo} itself
981 to 7. Note that @code{push} and @code{pop} on an @code{nthcdr}
982 place can be used to insert or delete at any position in a list.
983 The use of @code{nthcdr} as a @var{place} form is an extension
984 to standard Common Lisp.
985
986 @item
987 The following Emacs-specific functions are also @code{setf}-able.
988
989 @smallexample
990 buffer-file-name marker-position
991 buffer-modified-p match-data
992 buffer-name mouse-position
993 buffer-string overlay-end
994 buffer-substring overlay-get
995 current-buffer overlay-start
996 current-case-table point
997 current-column point-marker
998 current-global-map point-max
999 current-input-mode point-min
1000 current-local-map process-buffer
1001 current-window-configuration process-filter
1002 default-file-modes process-sentinel
1003 default-value read-mouse-position
1004 documentation-property screen-height
1005 extent-data screen-menubar
1006 extent-end-position screen-width
1007 extent-start-position selected-window
1008 face-background selected-screen
1009 face-background-pixmap selected-frame
1010 face-font standard-case-table
1011 face-foreground syntax-table
1012 face-underline-p window-buffer
1013 file-modes window-dedicated-p
1014 frame-height window-display-table
1015 frame-parameters window-height
1016 frame-visible-p window-hscroll
1017 frame-width window-point
1018 get-register window-start
1019 getenv window-width
1020 global-key-binding x-get-secondary-selection
1021 keymap-parent x-get-selection
1022 local-key-binding
1023 mark
1024 mark-marker
1025 @end smallexample
1026
1027 Most of these have directly corresponding ``set'' functions, like
1028 @code{use-local-map} for @code{current-local-map}, or @code{goto-char}
1029 for @code{point}. A few, like @code{point-min}, expand to longer
1030 sequences of code when they are @code{setf}'d (@code{(narrow-to-region
1031 x (point-max))} in this case).
1032
1033 @item
1034 A call of the form @code{(substring @var{subplace} @var{n} [@var{m}])},
1035 where @var{subplace} is itself a valid generalized variable whose
1036 current value is a string, and where the value stored is also a
1037 string. The new string is spliced into the specified part of the
1038 destination string. For example:
1039
1040 @example
1041 (setq a (list "hello" "world"))
1042 @result{} ("hello" "world")
1043 (cadr a)
1044 @result{} "world"
1045 (substring (cadr a) 2 4)
1046 @result{} "rl"
1047 (setf (substring (cadr a) 2 4) "o")
1048 @result{} "o"
1049 (cadr a)
1050 @result{} "wood"
1051 a
1052 @result{} ("hello" "wood")
1053 @end example
1054
1055 The generalized variable @code{buffer-substring}, listed above,
1056 also works in this way by replacing a portion of the current buffer.
1057
1058 @item
1059 A call of the form @code{(apply '@var{func} @dots{})} or
1060 @code{(apply (function @var{func}) @dots{})}, where @var{func}
1061 is a @code{setf}-able function whose store function is ``suitable''
1062 in the sense described in Steele's book; since none of the standard
1063 Emacs place functions are suitable in this sense, this feature is
1064 only interesting when used with places you define yourself with
1065 @code{define-setf-method} or the long form of @code{defsetf}.
1066
1067 @item
1068 A macro call, in which case the macro is expanded and @code{setf}
1069 is applied to the resulting form.
1070
1071 @item
1072 Any form for which a @code{defsetf} or @code{define-setf-method}
1073 has been made.
1074 @end itemize
1075
1076 Using any forms other than these in the @var{place} argument to
1077 @code{setf} will signal an error.
1078
1079 The @code{setf} macro takes care to evaluate all subforms in
1080 the proper left-to-right order; for example,
1081
1082 @example
1083 (setf (aref vec (incf i)) i)
1084 @end example
1085
1086 @noindent
1087 looks like it will evaluate @code{(incf i)} exactly once, before the
1088 following access to @code{i}; the @code{setf} expander will insert
1089 temporary variables as necessary to ensure that it does in fact work
1090 this way no matter what setf-method is defined for @code{aref}.
1091 (In this case, @code{aset} would be used and no such steps would
1092 be necessary since @code{aset} takes its arguments in a convenient
1093 order.)
1094
1095 However, if the @var{place} form is a macro which explicitly
1096 evaluates its arguments in an unusual order, this unusual order
1097 will be preserved. Adapting an example from Steele, given
1098
1099 @example
1100 (defmacro wrong-order (x y) (list 'aref y x))
1101 @end example
1102
1103 @noindent
1104 the form @code{(setf (wrong-order @var{a} @var{b}) 17)} will
1105 evaluate @var{b} first, then @var{a}, just as in an actual call
1106 to @code{wrong-order}.
1107 @end defspec
1108
1109 @node Modify Macros, Customizing Setf, Basic Setf, Generalized Variables
1110 @subsection Modify Macros
1111
1112 @noindent
1113 This package defines a number of other macros besides @code{setf}
1114 that operate on generalized variables. Many are interesting and
1115 useful even when the @var{place} is just a variable name.
1116
1117 @defspec psetf [place form]@dots{}
1118 This macro is to @code{setf} what @code{psetq} is to @code{setq}:
1119 When several @var{place}s and @var{form}s are involved, the
1120 assignments take place in parallel rather than sequentially.
1121 Specifically, all subforms are evaluated from left to right, then
1122 all the assignments are done (in an undefined order).
1123 @end defspec
1124
1125 @defspec incf place &optional x
1126 This macro increments the number stored in @var{place} by one, or
1127 by @var{x} if specified. The incremented value is returned. For
1128 example, @code{(incf i)} is equivalent to @code{(setq i (1+ i))}, and
1129 @code{(incf (car x) 2)} is equivalent to @code{(setcar x (+ (car x) 2))}.
1130
1131 Once again, care is taken to preserve the ``apparent'' order of
1132 evaluation. For example,
1133
1134 @example
1135 (incf (aref vec (incf i)))
1136 @end example
1137
1138 @noindent
1139 appears to increment @code{i} once, then increment the element of
1140 @code{vec} addressed by @code{i}; this is indeed exactly what it
1141 does, which means the above form is @emph{not} equivalent to the
1142 ``obvious'' expansion,
1143
1144 @example
1145 (setf (aref vec (incf i)) (1+ (aref vec (incf i)))) ; Wrong!
1146 @end example
1147
1148 @noindent
1149 but rather to something more like
1150
1151 @example
1152 (let ((temp (incf i)))
1153 (setf (aref vec temp) (1+ (aref vec temp))))
1154 @end example
1155
1156 @noindent
1157 Again, all of this is taken care of automatically by @code{incf} and
1158 the other generalized-variable macros.
1159
1160 As a more Emacs-specific example of @code{incf}, the expression
1161 @code{(incf (point) @var{n})} is essentially equivalent to
1162 @code{(forward-char @var{n})}.
1163 @end defspec
1164
1165 @defspec decf place &optional x
1166 This macro decrements the number stored in @var{place} by one, or
1167 by @var{x} if specified.
1168 @end defspec
1169
1170 @defspec pop place
1171 This macro removes and returns the first element of the list stored
1172 in @var{place}. It is analogous to @code{(prog1 (car @var{place})
1173 (setf @var{place} (cdr @var{place})))}, except that it takes care
1174 to evaluate all subforms only once.
1175 @end defspec
1176
1177 @defspec push x place
1178 This macro inserts @var{x} at the front of the list stored in
1179 @var{place}. It is analogous to @code{(setf @var{place} (cons
1180 @var{x} @var{place}))}, except for evaluation of the subforms.
1181 @end defspec
1182
1183 @defspec pushnew x place @t{&key :test :test-not :key}
1184 This macro inserts @var{x} at the front of the list stored in
1185 @var{place}, but only if @var{x} was not @code{eql} to any
1186 existing element of the list. The optional keyword arguments
1187 are interpreted in the same way as for @code{adjoin}.
1188 @xref{Lists as Sets}.
1189 @end defspec
1190
1191 @defspec shiftf place@dots{} newvalue
1192 This macro shifts the @var{place}s left by one, shifting in the
1193 value of @var{newvalue} (which may be any Lisp expression, not just
1194 a generalized variable), and returning the value shifted out of
1195 the first @var{place}. Thus, @code{(shiftf @var{a} @var{b} @var{c}
1196 @var{d})} is equivalent to
1197
1198 @example
1199 (prog1
1200 @var{a}
1201 (psetf @var{a} @var{b}
1202 @var{b} @var{c}
1203 @var{c} @var{d}))
1204 @end example
1205
1206 @noindent
1207 except that the subforms of @var{a}, @var{b}, and @var{c} are actually
1208 evaluated only once each and in the apparent order.
1209 @end defspec
1210
1211 @defspec rotatef place@dots{}
1212 This macro rotates the @var{place}s left by one in circular fashion.
1213 Thus, @code{(rotatef @var{a} @var{b} @var{c} @var{d})} is equivalent to
1214
1215 @example
1216 (psetf @var{a} @var{b}
1217 @var{b} @var{c}
1218 @var{c} @var{d}
1219 @var{d} @var{a})
1220 @end example
1221
1222 @noindent
1223 except for the evaluation of subforms. @code{rotatef} always
1224 returns @code{nil}. Note that @code{(rotatef @var{a} @var{b})}
1225 conveniently exchanges @var{a} and @var{b}.
1226 @end defspec
1227
1228 The following macros were invented for this package; they have no
1229 analogues in Common Lisp.
1230
1231 @defspec letf (bindings@dots{}) forms@dots{}
1232 This macro is analogous to @code{let}, but for generalized variables
1233 rather than just symbols. Each @var{binding} should be of the form
1234 @code{(@var{place} @var{value})}; the original contents of the
1235 @var{place}s are saved, the @var{value}s are stored in them, and
1236 then the body @var{form}s are executed. Afterwards, the @var{places}
1237 are set back to their original saved contents. This cleanup happens
1238 even if the @var{form}s exit irregularly due to a @code{throw} or an
1239 error.
1240
1241 For example,
1242
1243 @example
1244 (letf (((point) (point-min))
1245 (a 17))
1246 ...)
1247 @end example
1248
1249 @noindent
1250 moves ``point'' in the current buffer to the beginning of the buffer,
1251 and also binds @code{a} to 17 (as if by a normal @code{let}, since
1252 @code{a} is just a regular variable). After the body exits, @code{a}
1253 is set back to its original value and point is moved back to its
1254 original position.
1255
1256 Note that @code{letf} on @code{(point)} is not quite like a
1257 @code{save-excursion}, as the latter effectively saves a marker
1258 which tracks insertions and deletions in the buffer. Actually,
1259 a @code{letf} of @code{(point-marker)} is much closer to this
1260 behavior. (@code{point} and @code{point-marker} are equivalent
1261 as @code{setf} places; each will accept either an integer or a
1262 marker as the stored value.)
1263
1264 Since generalized variables look like lists, @code{let}'s shorthand
1265 of using @samp{foo} for @samp{(foo nil)} as a @var{binding} would
1266 be ambiguous in @code{letf} and is not allowed.
1267
1268 However, a @var{binding} specifier may be a one-element list
1269 @samp{(@var{place})}, which is similar to @samp{(@var{place}
1270 @var{place})}. In other words, the @var{place} is not disturbed
1271 on entry to the body, and the only effect of the @code{letf} is
1272 to restore the original value of @var{place} afterwards. (The
1273 redundant access-and-store suggested by the @code{(@var{place}
1274 @var{place})} example does not actually occur.)
1275
1276 In most cases, the @var{place} must have a well-defined value on
1277 entry to the @code{letf} form. The only exceptions are plain
1278 variables and calls to @code{symbol-value} and @code{symbol-function}.
1279 If the symbol is not bound on entry, it is simply made unbound by
1280 @code{makunbound} or @code{fmakunbound} on exit.
1281 @end defspec
1282
1283 @defspec letf* (bindings@dots{}) forms@dots{}
1284 This macro is to @code{letf} what @code{let*} is to @code{let}:
1285 It does the bindings in sequential rather than parallel order.
1286 @end defspec
1287
1288 @defspec callf @var{function} @var{place} @var{args}@dots{}
1289 This is the ``generic'' modify macro. It calls @var{function},
1290 which should be an unquoted function name, macro name, or lambda.
1291 It passes @var{place} and @var{args} as arguments, and assigns the
1292 result back to @var{place}. For example, @code{(incf @var{place}
1293 @var{n})} is the same as @code{(callf + @var{place} @var{n})}.
1294 Some more examples:
1295
1296 @example
1297 (callf abs my-number)
1298 (callf concat (buffer-name) "<" (int-to-string n) ">")
1299 (callf union happy-people (list joe bob) :test 'same-person)
1300 @end example
1301
1302 @xref{Customizing Setf}, for @code{define-modify-macro}, a way
1303 to create even more concise notations for modify macros. Note
1304 again that @code{callf} is an extension to standard Common Lisp.
1305 @end defspec
1306
1307 @defspec callf2 @var{function} @var{arg1} @var{place} @var{args}@dots{}
1308 This macro is like @code{callf}, except that @var{place} is
1309 the @emph{second} argument of @var{function} rather than the
1310 first. For example, @code{(push @var{x} @var{place})} is
1311 equivalent to @code{(callf2 cons @var{x} @var{place})}.
1312 @end defspec
1313
1314 The @code{callf} and @code{callf2} macros serve as building
1315 blocks for other macros like @code{incf}, @code{pushnew}, and
1316 @code{define-modify-macro}. The @code{letf} and @code{letf*}
1317 macros are used in the processing of symbol macros;
1318 @pxref{Macro Bindings}.
1319
1320 @node Customizing Setf, , Modify Macros, Generalized Variables
1321 @subsection Customizing Setf
1322
1323 @noindent
1324 Common Lisp defines three macros, @code{define-modify-macro},
1325 @code{defsetf}, and @code{define-setf-method}, that allow the
1326 user to extend generalized variables in various ways.
1327
1328 @defspec define-modify-macro name arglist function [doc-string]
1329 This macro defines a ``read-modify-write'' macro similar to
1330 @code{incf} and @code{decf}. The macro @var{name} is defined
1331 to take a @var{place} argument followed by additional arguments
1332 described by @var{arglist}. The call
1333
1334 @example
1335 (@var{name} @var{place} @var{args}...)
1336 @end example
1337
1338 @noindent
1339 will be expanded to
1340
1341 @example
1342 (callf @var{func} @var{place} @var{args}...)
1343 @end example
1344
1345 @noindent
1346 which in turn is roughly equivalent to
1347
1348 @example
1349 (setf @var{place} (@var{func} @var{place} @var{args}...))
1350 @end example
1351
1352 For example:
1353
1354 @example
1355 (define-modify-macro incf (&optional (n 1)) +)
1356 (define-modify-macro concatf (&rest args) concat)
1357 @end example
1358
1359 Note that @code{&key} is not allowed in @var{arglist}, but
1360 @code{&rest} is sufficient to pass keywords on to the function.
1361
1362 Most of the modify macros defined by Common Lisp do not exactly
1363 follow the pattern of @code{define-modify-macro}. For example,
1364 @code{push} takes its arguments in the wrong order, and @code{pop}
1365 is completely irregular. You can define these macros ``by hand''
1366 using @code{get-setf-method}, or consult the source file
1367 @file{cl-macs.el} to see how to use the internal @code{setf}
1368 building blocks.
1369 @end defspec
1370
1371 @defspec defsetf access-fn update-fn
1372 This is the simpler of two @code{defsetf} forms. Where
1373 @var{access-fn} is the name of a function which accesses a place,
1374 this declares @var{update-fn} to be the corresponding store
1375 function. From now on,
1376
1377 @example
1378 (setf (@var{access-fn} @var{arg1} @var{arg2} @var{arg3}) @var{value})
1379 @end example
1380
1381 @noindent
1382 will be expanded to
1383
1384 @example
1385 (@var{update-fn} @var{arg1} @var{arg2} @var{arg3} @var{value})
1386 @end example
1387
1388 @noindent
1389 The @var{update-fn} is required to be either a true function, or
1390 a macro which evaluates its arguments in a function-like way. Also,
1391 the @var{update-fn} is expected to return @var{value} as its result.
1392 Otherwise, the above expansion would not obey the rules for the way
1393 @code{setf} is supposed to behave.
1394
1395 As a special (non-Common-Lisp) extension, a third argument of @code{t}
1396 to @code{defsetf} says that the @code{update-fn}'s return value is
1397 not suitable, so that the above @code{setf} should be expanded to
1398 something more like
1399
1400 @example
1401 (let ((temp @var{value}))
1402 (@var{update-fn} @var{arg1} @var{arg2} @var{arg3} temp)
1403 temp)
1404 @end example
1405
1406 Some examples of the use of @code{defsetf}, drawn from the standard
1407 suite of setf methods, are:
1408
1409 @example
1410 (defsetf car setcar)
1411 (defsetf symbol-value set)
1412 (defsetf buffer-name rename-buffer t)
1413 @end example
1414 @end defspec
1415
1416 @defspec defsetf access-fn arglist (store-var) forms@dots{}
1417 This is the second, more complex, form of @code{defsetf}. It is
1418 rather like @code{defmacro} except for the additional @var{store-var}
1419 argument. The @var{forms} should return a Lisp form which stores
1420 the value of @var{store-var} into the generalized variable formed
1421 by a call to @var{access-fn} with arguments described by @var{arglist}.
1422 The @var{forms} may begin with a string which documents the @code{setf}
1423 method (analogous to the doc string that appears at the front of a
1424 function).
1425
1426 For example, the simple form of @code{defsetf} is shorthand for
1427
1428 @example
1429 (defsetf @var{access-fn} (&rest args) (store)
1430 (append '(@var{update-fn}) args (list store)))
1431 @end example
1432
1433 The Lisp form that is returned can access the arguments from
1434 @var{arglist} and @var{store-var} in an unrestricted fashion;
1435 macros like @code{setf} and @code{incf} which invoke this
1436 setf-method will insert temporary variables as needed to make
1437 sure the apparent order of evaluation is preserved.
1438
1439 Another example drawn from the standard package:
1440
1441 @example
1442 (defsetf nth (n x) (store)
1443 (list 'setcar (list 'nthcdr n x) store))
1444 @end example
1445 @end defspec
1446
1447 @defspec define-setf-method access-fn arglist forms@dots{}
1448 This is the most general way to create new place forms. When
1449 a @code{setf} to @var{access-fn} with arguments described by
1450 @var{arglist} is expanded, the @var{forms} are evaluated and
1451 must return a list of five items:
1452
1453 @enumerate
1454 @item
1455 A list of @dfn{temporary variables}.
1456
1457 @item
1458 A list of @dfn{value forms} corresponding to the temporary variables
1459 above. The temporary variables will be bound to these value forms
1460 as the first step of any operation on the generalized variable.
1461
1462 @item
1463 A list of exactly one @dfn{store variable} (generally obtained
1464 from a call to @code{gensym}).
1465
1466 @item
1467 A Lisp form which stores the contents of the store variable into
1468 the generalized variable, assuming the temporaries have been
1469 bound as described above.
1470
1471 @item
1472 A Lisp form which accesses the contents of the generalized variable,
1473 assuming the temporaries have been bound.
1474 @end enumerate
1475
1476 This is exactly like the Common Lisp macro of the same name,
1477 except that the method returns a list of five values rather
1478 than the five values themselves, since Emacs Lisp does not
1479 support Common Lisp's notion of multiple return values.
1480
1481 Once again, the @var{forms} may begin with a documentation string.
1482
1483 A setf-method should be maximally conservative with regard to
1484 temporary variables. In the setf-methods generated by
1485 @code{defsetf}, the second return value is simply the list of
1486 arguments in the place form, and the first return value is a
1487 list of a corresponding number of temporary variables generated
1488 by @code{gensym}. Macros like @code{setf} and @code{incf} which
1489 use this setf-method will optimize away most temporaries that
1490 turn out to be unnecessary, so there is little reason for the
1491 setf-method itself to optimize.
1492 @end defspec
1493
1494 @defun get-setf-method place &optional env
1495 This function returns the setf-method for @var{place}, by
1496 invoking the definition previously recorded by @code{defsetf}
1497 or @code{define-setf-method}. The result is a list of five
1498 values as described above. You can use this function to build
1499 your own @code{incf}-like modify macros. (Actually, it is
1500 better to use the internal functions @code{cl-setf-do-modify}
1501 and @code{cl-setf-do-store}, which are a bit easier to use and
1502 which also do a number of optimizations; consult the source
1503 code for the @code{incf} function for a simple example.)
1504
1505 The argument @var{env} specifies the ``environment'' to be
1506 passed on to @code{macroexpand} if @code{get-setf-method} should
1507 need to expand a macro in @var{place}. It should come from
1508 an @code{&environment} argument to the macro or setf-method
1509 that called @code{get-setf-method}.
1510
1511 See also the source code for the setf-methods for @code{apply}
1512 and @code{substring}, each of which works by calling
1513 @code{get-setf-method} on a simpler case, then massaging
1514 the result in various ways.
1515 @end defun
1516
1517 Modern Common Lisp defines a second, independent way to specify
1518 the @code{setf} behavior of a function, namely ``@code{setf}
1519 functions'' whose names are lists @code{(setf @var{name})}
1520 rather than symbols. For example, @code{(defun (setf foo) @dots{})}
1521 defines the function that is used when @code{setf} is applied to
1522 @code{foo}. This package does not currently support @code{setf}
1523 functions. In particular, it is a compile-time error to use
1524 @code{setf} on a form which has not already been @code{defsetf}'d
1525 or otherwise declared; in newer Common Lisps, this would not be
1526 an error since the function @code{(setf @var{func})} might be
1527 defined later.
1528
1529 @iftex
1530 @secno=4
1531 @end iftex
1532
1533 @node Variable Bindings, Conditionals, Generalized Variables, Control Structure
1534 @section Variable Bindings
1535
1536 @noindent
1537 These Lisp forms make bindings to variables and function names,
1538 analogous to Lisp's built-in @code{let} form.
1539
1540 @xref{Modify Macros}, for the @code{letf} and @code{letf*} forms which
1541 are also related to variable bindings.
1542
1543 @menu
1544 * Dynamic Bindings:: The `progv' form
1545 * Lexical Bindings:: `lexical-let' and lexical closures
1546 * Function Bindings:: `flet' and `labels'
1547 * Macro Bindings:: `macrolet' and `symbol-macrolet'
1548 @end menu
1549
1550 @node Dynamic Bindings, Lexical Bindings, Variable Bindings, Variable Bindings
1551 @subsection Dynamic Bindings
1552
1553 @noindent
1554 The standard @code{let} form binds variables whose names are known
1555 at compile-time. The @code{progv} form provides an easy way to
1556 bind variables whose names are computed at run-time.
1557
1558 @defspec progv symbols values forms@dots{}
1559 This form establishes @code{let}-style variable bindings on a
1560 set of variables computed at run-time. The expressions
1561 @var{symbols} and @var{values} are evaluated, and must return lists
1562 of symbols and values, respectively. The symbols are bound to the
1563 corresponding values for the duration of the body @var{form}s.
1564 If @var{values} is shorter than @var{symbols}, the last few symbols
1565 are made unbound (as if by @code{makunbound}) inside the body.
1566 If @var{symbols} is shorter than @var{values}, the excess values
1567 are ignored.
1568 @end defspec
1569
1570 @node Lexical Bindings, Function Bindings, Dynamic Bindings, Variable Bindings
1571 @subsection Lexical Bindings
1572
1573 @noindent
1574 The @dfn{CL} package defines the following macro which
1575 more closely follows the Common Lisp @code{let} form:
1576
1577 @defspec lexical-let (bindings@dots{}) forms@dots{}
1578 This form is exactly like @code{let} except that the bindings it
1579 establishes are purely lexical. Lexical bindings are similar to
1580 local variables in a language like C: Only the code physically
1581 within the body of the @code{lexical-let} (after macro expansion)
1582 may refer to the bound variables.
1583
1584 @example
1585 (setq a 5)
1586 (defun foo (b) (+ a b))
1587 (let ((a 2)) (foo a))
1588 @result{} 4
1589 (lexical-let ((a 2)) (foo a))
1590 @result{} 7
1591 @end example
1592
1593 @noindent
1594 In this example, a regular @code{let} binding of @code{a} actually
1595 makes a temporary change to the global variable @code{a}, so @code{foo}
1596 is able to see the binding of @code{a} to 2. But @code{lexical-let}
1597 actually creates a distinct local variable @code{a} for use within its
1598 body, without any effect on the global variable of the same name.
1599
1600 The most important use of lexical bindings is to create @dfn{closures}.
1601 A closure is a function object that refers to an outside lexical
1602 variable. For example:
1603
1604 @example
1605 (defun make-adder (n)
1606 (lexical-let ((n n))
1607 (function (lambda (m) (+ n m)))))
1608 (setq add17 (make-adder 17))
1609 (funcall add17 4)
1610 @result{} 21
1611 @end example
1612
1613 @noindent
1614 The call @code{(make-adder 17)} returns a function object which adds
1615 17 to its argument. If @code{let} had been used instead of
1616 @code{lexical-let}, the function object would have referred to the
1617 global @code{n}, which would have been bound to 17 only during the
1618 call to @code{make-adder} itself.
1619
1620 @example
1621 (defun make-counter ()
1622 (lexical-let ((n 0))
1623 (function* (lambda (&optional (m 1)) (incf n m)))))
1624 (setq count-1 (make-counter))
1625 (funcall count-1 3)
1626 @result{} 3
1627 (funcall count-1 14)
1628 @result{} 17
1629 (setq count-2 (make-counter))
1630 (funcall count-2 5)
1631 @result{} 5
1632 (funcall count-1 2)
1633 @result{} 19
1634 (funcall count-2)
1635 @result{} 6
1636 @end example
1637
1638 @noindent
1639 Here we see that each call to @code{make-counter} creates a distinct
1640 local variable @code{n}, which serves as a private counter for the
1641 function object that is returned.
1642
1643 Closed-over lexical variables persist until the last reference to
1644 them goes away, just like all other Lisp objects. For example,
1645 @code{count-2} refers to a function object which refers to an
1646 instance of the variable @code{n}; this is the only reference
1647 to that variable, so after @code{(setq count-2 nil)} the garbage
1648 collector would be able to delete this instance of @code{n}.
1649 Of course, if a @code{lexical-let} does not actually create any
1650 closures, then the lexical variables are free as soon as the
1651 @code{lexical-let} returns.
1652
1653 Many closures are used only during the extent of the bindings they
1654 refer to; these are known as ``downward funargs'' in Lisp parlance.
1655 When a closure is used in this way, regular Emacs Lisp dynamic
1656 bindings suffice and will be more efficient than @code{lexical-let}
1657 closures:
1658
1659 @example
1660 (defun add-to-list (x list)
1661 (mapcar (lambda (y) (+ x y))) list)
1662 (add-to-list 7 '(1 2 5))
1663 @result{} (8 9 12)
1664 @end example
1665
1666 @noindent
1667 Since this lambda is only used while @code{x} is still bound,
1668 it is not necessary to make a true closure out of it.
1669
1670 You can use @code{defun} or @code{flet} inside a @code{lexical-let}
1671 to create a named closure. If several closures are created in the
1672 body of a single @code{lexical-let}, they all close over the same
1673 instance of the lexical variable.
1674
1675 The @code{lexical-let} form is an extension to Common Lisp. In
1676 true Common Lisp, all bindings are lexical unless declared otherwise.
1677 @end defspec
1678
1679 @defspec lexical-let* (bindings@dots{}) forms@dots{}
1680 This form is just like @code{lexical-let}, except that the bindings
1681 are made sequentially in the manner of @code{let*}.
1682 @end defspec
1683
1684 @node Function Bindings, Macro Bindings, Lexical Bindings, Variable Bindings
1685 @subsection Function Bindings
1686
1687 @noindent
1688 These forms make @code{let}-like bindings to functions instead
1689 of variables.
1690
1691 @defspec flet (bindings@dots{}) forms@dots{}
1692 This form establishes @code{let}-style bindings on the function
1693 cells of symbols rather than on the value cells. Each @var{binding}
1694 must be a list of the form @samp{(@var{name} @var{arglist}
1695 @var{forms}@dots{})}, which defines a function exactly as if
1696 it were a @code{defun*} form. The function @var{name} is defined
1697 accordingly for the duration of the body of the @code{flet}; then
1698 the old function definition, or lack thereof, is restored.
1699
1700 While @code{flet} in Common Lisp establishes a lexical binding of
1701 @var{name}, Emacs Lisp @code{flet} makes a dynamic binding. The
1702 result is that @code{flet} affects indirect calls to a function as
1703 well as calls directly inside the @code{flet} form itself.
1704
1705 You can use @code{flet} to disable or modify the behavior of a
1706 function in a temporary fashion. This will even work on Emacs
1707 primitives, although note that some calls to primitive functions
1708 internal to Emacs are made without going through the symbol's
1709 function cell, and so will not be affected by @code{flet}. For
1710 example,
1711
1712 @example
1713 (flet ((message (&rest args) (push args saved-msgs)))
1714 (do-something))
1715 @end example
1716
1717 This code attempts to replace the built-in function @code{message}
1718 with a function that simply saves the messages in a list rather
1719 than displaying them. The original definition of @code{message}
1720 will be restored after @code{do-something} exits. This code will
1721 work fine on messages generated by other Lisp code, but messages
1722 generated directly inside Emacs will not be caught since they make
1723 direct C-language calls to the message routines rather than going
1724 through the Lisp @code{message} function.
1725
1726 @c Bug#411.
1727 Also note that many primitives (e.g. @code{+}) have special byte-compile
1728 handling. Attempts to redefine such functions using @code{flet} will
1729 fail if byte-compiled. In such cases, use @code{labels} instead.
1730
1731 Functions defined by @code{flet} may use the full Common Lisp
1732 argument notation supported by @code{defun*}; also, the function
1733 body is enclosed in an implicit block as if by @code{defun*}.
1734 @xref{Program Structure}.
1735 @end defspec
1736
1737 @defspec labels (bindings@dots{}) forms@dots{}
1738 The @code{labels} form is like @code{flet}, except that it
1739 makes lexical bindings of the function names rather than
1740 dynamic bindings. (In true Common Lisp, both @code{flet} and
1741 @code{labels} make lexical bindings of slightly different sorts;
1742 since Emacs Lisp is dynamically bound by default, it seemed
1743 more appropriate for @code{flet} also to use dynamic binding.
1744 The @code{labels} form, with its lexical binding, is fully
1745 compatible with Common Lisp.)
1746
1747 Lexical scoping means that all references to the named
1748 functions must appear physically within the body of the
1749 @code{labels} form. References may appear both in the body
1750 @var{forms} of @code{labels} itself, and in the bodies of
1751 the functions themselves. Thus, @code{labels} can define
1752 local recursive functions, or mutually-recursive sets of
1753 functions.
1754
1755 A ``reference'' to a function name is either a call to that
1756 function, or a use of its name quoted by @code{quote} or
1757 @code{function} to be passed on to, say, @code{mapcar}.
1758 @end defspec
1759
1760 @node Macro Bindings, , Function Bindings, Variable Bindings
1761 @subsection Macro Bindings
1762
1763 @noindent
1764 These forms create local macros and ``symbol macros.''
1765
1766 @defspec macrolet (bindings@dots{}) forms@dots{}
1767 This form is analogous to @code{flet}, but for macros instead of
1768 functions. Each @var{binding} is a list of the same form as the
1769 arguments to @code{defmacro*} (i.e., a macro name, argument list,
1770 and macro-expander forms). The macro is defined accordingly for
1771 use within the body of the @code{macrolet}.
1772
1773 Because of the nature of macros, @code{macrolet} is lexically
1774 scoped even in Emacs Lisp: The @code{macrolet} binding will
1775 affect only calls that appear physically within the body
1776 @var{forms}, possibly after expansion of other macros in the
1777 body.
1778 @end defspec
1779
1780 @defspec symbol-macrolet (bindings@dots{}) forms@dots{}
1781 This form creates @dfn{symbol macros}, which are macros that look
1782 like variable references rather than function calls. Each
1783 @var{binding} is a list @samp{(@var{var} @var{expansion})};
1784 any reference to @var{var} within the body @var{forms} is
1785 replaced by @var{expansion}.
1786
1787 @example
1788 (setq bar '(5 . 9))
1789 (symbol-macrolet ((foo (car bar)))
1790 (incf foo))
1791 bar
1792 @result{} (6 . 9)
1793 @end example
1794
1795 A @code{setq} of a symbol macro is treated the same as a @code{setf}.
1796 I.e., @code{(setq foo 4)} in the above would be equivalent to
1797 @code{(setf foo 4)}, which in turn expands to @code{(setf (car bar) 4)}.
1798
1799 Likewise, a @code{let} or @code{let*} binding a symbol macro is
1800 treated like a @code{letf} or @code{letf*}. This differs from true
1801 Common Lisp, where the rules of lexical scoping cause a @code{let}
1802 binding to shadow a @code{symbol-macrolet} binding. In this package,
1803 only @code{lexical-let} and @code{lexical-let*} will shadow a symbol
1804 macro.
1805
1806 There is no analogue of @code{defmacro} for symbol macros; all symbol
1807 macros are local. A typical use of @code{symbol-macrolet} is in the
1808 expansion of another macro:
1809
1810 @example
1811 (defmacro* my-dolist ((x list) &rest body)
1812 (let ((var (gensym)))
1813 (list 'loop 'for var 'on list 'do
1814 (list* 'symbol-macrolet (list (list x (list 'car var)))
1815 body))))
1816
1817 (setq mylist '(1 2 3 4))
1818 (my-dolist (x mylist) (incf x))
1819 mylist
1820 @result{} (2 3 4 5)
1821 @end example
1822
1823 @noindent
1824 In this example, the @code{my-dolist} macro is similar to @code{dolist}
1825 (@pxref{Iteration}) except that the variable @code{x} becomes a true
1826 reference onto the elements of the list. The @code{my-dolist} call
1827 shown here expands to
1828
1829 @example
1830 (loop for G1234 on mylist do
1831 (symbol-macrolet ((x (car G1234)))
1832 (incf x)))
1833 @end example
1834
1835 @noindent
1836 which in turn expands to
1837
1838 @example
1839 (loop for G1234 on mylist do (incf (car G1234)))
1840 @end example
1841
1842 @xref{Loop Facility}, for a description of the @code{loop} macro.
1843 This package defines a nonstandard @code{in-ref} loop clause that
1844 works much like @code{my-dolist}.
1845 @end defspec
1846
1847 @node Conditionals, Blocks and Exits, Variable Bindings, Control Structure
1848 @section Conditionals
1849
1850 @noindent
1851 These conditional forms augment Emacs Lisp's simple @code{if},
1852 @code{and}, @code{or}, and @code{cond} forms.
1853
1854 @defspec case keyform clause@dots{}
1855 This macro evaluates @var{keyform}, then compares it with the key
1856 values listed in the various @var{clause}s. Whichever clause matches
1857 the key is executed; comparison is done by @code{eql}. If no clause
1858 matches, the @code{case} form returns @code{nil}. The clauses are
1859 of the form
1860
1861 @example
1862 (@var{keylist} @var{body-forms}@dots{})
1863 @end example
1864
1865 @noindent
1866 where @var{keylist} is a list of key values. If there is exactly
1867 one value, and it is not a cons cell or the symbol @code{nil} or
1868 @code{t}, then it can be used by itself as a @var{keylist} without
1869 being enclosed in a list. All key values in the @code{case} form
1870 must be distinct. The final clauses may use @code{t} in place of
1871 a @var{keylist} to indicate a default clause that should be taken
1872 if none of the other clauses match. (The symbol @code{otherwise}
1873 is also recognized in place of @code{t}. To make a clause that
1874 matches the actual symbol @code{t}, @code{nil}, or @code{otherwise},
1875 enclose the symbol in a list.)
1876
1877 For example, this expression reads a keystroke, then does one of
1878 four things depending on whether it is an @samp{a}, a @samp{b},
1879 a @key{RET} or @kbd{C-j}, or anything else.
1880
1881 @example
1882 (case (read-char)
1883 (?a (do-a-thing))
1884 (?b (do-b-thing))
1885 ((?\r ?\n) (do-ret-thing))
1886 (t (do-other-thing)))
1887 @end example
1888 @end defspec
1889
1890 @defspec ecase keyform clause@dots{}
1891 This macro is just like @code{case}, except that if the key does
1892 not match any of the clauses, an error is signaled rather than
1893 simply returning @code{nil}.
1894 @end defspec
1895
1896 @defspec typecase keyform clause@dots{}
1897 This macro is a version of @code{case} that checks for types
1898 rather than values. Each @var{clause} is of the form
1899 @samp{(@var{type} @var{body}...)}. @xref{Type Predicates},
1900 for a description of type specifiers. For example,
1901
1902 @example
1903 (typecase x
1904 (integer (munch-integer x))
1905 (float (munch-float x))
1906 (string (munch-integer (string-to-int x)))
1907 (t (munch-anything x)))
1908 @end example
1909
1910 The type specifier @code{t} matches any type of object; the word
1911 @code{otherwise} is also allowed. To make one clause match any of
1912 several types, use an @code{(or ...)} type specifier.
1913 @end defspec
1914
1915 @defspec etypecase keyform clause@dots{}
1916 This macro is just like @code{typecase}, except that if the key does
1917 not match any of the clauses, an error is signaled rather than
1918 simply returning @code{nil}.
1919 @end defspec
1920
1921 @node Blocks and Exits, Iteration, Conditionals, Control Structure
1922 @section Blocks and Exits
1923
1924 @noindent
1925 Common Lisp @dfn{blocks} provide a non-local exit mechanism very
1926 similar to @code{catch} and @code{throw}, but lexically rather than
1927 dynamically scoped. This package actually implements @code{block}
1928 in terms of @code{catch}; however, the lexical scoping allows the
1929 optimizing byte-compiler to omit the costly @code{catch} step if the
1930 body of the block does not actually @code{return-from} the block.
1931
1932 @defspec block name forms@dots{}
1933 The @var{forms} are evaluated as if by a @code{progn}. However,
1934 if any of the @var{forms} execute @code{(return-from @var{name})},
1935 they will jump out and return directly from the @code{block} form.
1936 The @code{block} returns the result of the last @var{form} unless
1937 a @code{return-from} occurs.
1938
1939 The @code{block}/@code{return-from} mechanism is quite similar to
1940 the @code{catch}/@code{throw} mechanism. The main differences are
1941 that block @var{name}s are unevaluated symbols, rather than forms
1942 (such as quoted symbols) which evaluate to a tag at run-time; and
1943 also that blocks are lexically scoped whereas @code{catch}/@code{throw}
1944 are dynamically scoped. This means that functions called from the
1945 body of a @code{catch} can also @code{throw} to the @code{catch},
1946 but the @code{return-from} referring to a block name must appear
1947 physically within the @var{forms} that make up the body of the block.
1948 They may not appear within other called functions, although they may
1949 appear within macro expansions or @code{lambda}s in the body. Block
1950 names and @code{catch} names form independent name-spaces.
1951
1952 In true Common Lisp, @code{defun} and @code{defmacro} surround
1953 the function or expander bodies with implicit blocks with the
1954 same name as the function or macro. This does not occur in Emacs
1955 Lisp, but this package provides @code{defun*} and @code{defmacro*}
1956 forms which do create the implicit block.
1957
1958 The Common Lisp looping constructs defined by this package,
1959 such as @code{loop} and @code{dolist}, also create implicit blocks
1960 just as in Common Lisp.
1961
1962 Because they are implemented in terms of Emacs Lisp @code{catch}
1963 and @code{throw}, blocks have the same overhead as actual
1964 @code{catch} constructs (roughly two function calls). However,
1965 the optimizing byte compiler will optimize away the @code{catch}
1966 if the block does
1967 not in fact contain any @code{return} or @code{return-from} calls
1968 that jump to it. This means that @code{do} loops and @code{defun*}
1969 functions which don't use @code{return} don't pay the overhead to
1970 support it.
1971 @end defspec
1972
1973 @defspec return-from name [result]
1974 This macro returns from the block named @var{name}, which must be
1975 an (unevaluated) symbol. If a @var{result} form is specified, it
1976 is evaluated to produce the result returned from the @code{block}.
1977 Otherwise, @code{nil} is returned.
1978 @end defspec
1979
1980 @defspec return [result]
1981 This macro is exactly like @code{(return-from nil @var{result})}.
1982 Common Lisp loops like @code{do} and @code{dolist} implicitly enclose
1983 themselves in @code{nil} blocks.
1984 @end defspec
1985
1986 @node Iteration, Loop Facility, Blocks and Exits, Control Structure
1987 @section Iteration
1988
1989 @noindent
1990 The macros described here provide more sophisticated, high-level
1991 looping constructs to complement Emacs Lisp's basic @code{while}
1992 loop.
1993
1994 @defspec loop forms@dots{}
1995 The @dfn{CL} package supports both the simple, old-style meaning of
1996 @code{loop} and the extremely powerful and flexible feature known as
1997 the @dfn{Loop Facility} or @dfn{Loop Macro}. This more advanced
1998 facility is discussed in the following section; @pxref{Loop Facility}.
1999 The simple form of @code{loop} is described here.
2000
2001 If @code{loop} is followed by zero or more Lisp expressions,
2002 then @code{(loop @var{exprs}@dots{})} simply creates an infinite
2003 loop executing the expressions over and over. The loop is
2004 enclosed in an implicit @code{nil} block. Thus,
2005
2006 @example
2007 (loop (foo) (if (no-more) (return 72)) (bar))
2008 @end example
2009
2010 @noindent
2011 is exactly equivalent to
2012
2013 @example
2014 (block nil (while t (foo) (if (no-more) (return 72)) (bar)))
2015 @end example
2016
2017 If any of the expressions are plain symbols, the loop is instead
2018 interpreted as a Loop Macro specification as described later.
2019 (This is not a restriction in practice, since a plain symbol
2020 in the above notation would simply access and throw away the
2021 value of a variable.)
2022 @end defspec
2023
2024 @defspec do (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
2025 This macro creates a general iterative loop. Each @var{spec} is
2026 of the form
2027
2028 @example
2029 (@var{var} [@var{init} [@var{step}]])
2030 @end example
2031
2032 The loop works as follows: First, each @var{var} is bound to the
2033 associated @var{init} value as if by a @code{let} form. Then, in
2034 each iteration of the loop, the @var{end-test} is evaluated; if
2035 true, the loop is finished. Otherwise, the body @var{forms} are
2036 evaluated, then each @var{var} is set to the associated @var{step}
2037 expression (as if by a @code{psetq} form) and the next iteration
2038 begins. Once the @var{end-test} becomes true, the @var{result}
2039 forms are evaluated (with the @var{var}s still bound to their
2040 values) to produce the result returned by @code{do}.
2041
2042 The entire @code{do} loop is enclosed in an implicit @code{nil}
2043 block, so that you can use @code{(return)} to break out of the
2044 loop at any time.
2045
2046 If there are no @var{result} forms, the loop returns @code{nil}.
2047 If a given @var{var} has no @var{step} form, it is bound to its
2048 @var{init} value but not otherwise modified during the @code{do}
2049 loop (unless the code explicitly modifies it); this case is just
2050 a shorthand for putting a @code{(let ((@var{var} @var{init})) @dots{})}
2051 around the loop. If @var{init} is also omitted it defaults to
2052 @code{nil}, and in this case a plain @samp{@var{var}} can be used
2053 in place of @samp{(@var{var})}, again following the analogy with
2054 @code{let}.
2055
2056 This example (from Steele) illustrates a loop which applies the
2057 function @code{f} to successive pairs of values from the lists
2058 @code{foo} and @code{bar}; it is equivalent to the call
2059 @code{(mapcar* 'f foo bar)}. Note that this loop has no body
2060 @var{forms} at all, performing all its work as side effects of
2061 the rest of the loop.
2062
2063 @example
2064 (do ((x foo (cdr x))
2065 (y bar (cdr y))
2066 (z nil (cons (f (car x) (car y)) z)))
2067 ((or (null x) (null y))
2068 (nreverse z)))
2069 @end example
2070 @end defspec
2071
2072 @defspec do* (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
2073 This is to @code{do} what @code{let*} is to @code{let}. In
2074 particular, the initial values are bound as if by @code{let*}
2075 rather than @code{let}, and the steps are assigned as if by
2076 @code{setq} rather than @code{psetq}.
2077
2078 Here is another way to write the above loop:
2079
2080 @example
2081 (do* ((xp foo (cdr xp))
2082 (yp bar (cdr yp))
2083 (x (car xp) (car xp))
2084 (y (car yp) (car yp))
2085 z)
2086 ((or (null xp) (null yp))
2087 (nreverse z))
2088 (push (f x y) z))
2089 @end example
2090 @end defspec
2091
2092 @defspec dolist (var list [result]) forms@dots{}
2093 This is a more specialized loop which iterates across the elements
2094 of a list. @var{list} should evaluate to a list; the body @var{forms}
2095 are executed with @var{var} bound to each element of the list in
2096 turn. Finally, the @var{result} form (or @code{nil}) is evaluated
2097 with @var{var} bound to @code{nil} to produce the result returned by
2098 the loop. Unlike with Emacs's built in @code{dolist}, the loop is
2099 surrounded by an implicit @code{nil} block.
2100 @end defspec
2101
2102 @defspec dotimes (var count [result]) forms@dots{}
2103 This is a more specialized loop which iterates a specified number
2104 of times. The body is executed with @var{var} bound to the integers
2105 from zero (inclusive) to @var{count} (exclusive), in turn. Then
2106 the @code{result} form is evaluated with @var{var} bound to the total
2107 number of iterations that were done (i.e., @code{(max 0 @var{count})})
2108 to get the return value for the loop form. Unlike with Emacs's built in
2109 @code{dolist}, the loop is surrounded by an implicit @code{nil} block.
2110 @end defspec
2111
2112 @defspec do-symbols (var [obarray [result]]) forms@dots{}
2113 This loop iterates over all interned symbols. If @var{obarray}
2114 is specified and is not @code{nil}, it loops over all symbols in
2115 that obarray. For each symbol, the body @var{forms} are evaluated
2116 with @var{var} bound to that symbol. The symbols are visited in
2117 an unspecified order. Afterward the @var{result} form, if any,
2118 is evaluated (with @var{var} bound to @code{nil}) to get the return
2119 value. The loop is surrounded by an implicit @code{nil} block.
2120 @end defspec
2121
2122 @defspec do-all-symbols (var [result]) forms@dots{}
2123 This is identical to @code{do-symbols} except that the @var{obarray}
2124 argument is omitted; it always iterates over the default obarray.
2125 @end defspec
2126
2127 @xref{Mapping over Sequences}, for some more functions for
2128 iterating over vectors or lists.
2129
2130 @node Loop Facility, Multiple Values, Iteration, Control Structure
2131 @section Loop Facility
2132
2133 @noindent
2134 A common complaint with Lisp's traditional looping constructs is
2135 that they are either too simple and limited, such as Common Lisp's
2136 @code{dotimes} or Emacs Lisp's @code{while}, or too unreadable and
2137 obscure, like Common Lisp's @code{do} loop.
2138
2139 To remedy this, recent versions of Common Lisp have added a new
2140 construct called the ``Loop Facility'' or ``@code{loop} macro,''
2141 with an easy-to-use but very powerful and expressive syntax.
2142
2143 @menu
2144 * Loop Basics:: `loop' macro, basic clause structure
2145 * Loop Examples:: Working examples of `loop' macro
2146 * For Clauses:: Clauses introduced by `for' or `as'
2147 * Iteration Clauses:: `repeat', `while', `thereis', etc.
2148 * Accumulation Clauses:: `collect', `sum', `maximize', etc.
2149 * Other Clauses:: `with', `if', `initially', `finally'
2150 @end menu
2151
2152 @node Loop Basics, Loop Examples, Loop Facility, Loop Facility
2153 @subsection Loop Basics
2154
2155 @noindent
2156 The @code{loop} macro essentially creates a mini-language within
2157 Lisp that is specially tailored for describing loops. While this
2158 language is a little strange-looking by the standards of regular Lisp,
2159 it turns out to be very easy to learn and well-suited to its purpose.
2160
2161 Since @code{loop} is a macro, all parsing of the loop language
2162 takes place at byte-compile time; compiled @code{loop}s are just
2163 as efficient as the equivalent @code{while} loops written longhand.
2164
2165 @defspec loop clauses@dots{}
2166 A loop construct consists of a series of @var{clause}s, each
2167 introduced by a symbol like @code{for} or @code{do}. Clauses
2168 are simply strung together in the argument list of @code{loop},
2169 with minimal extra parentheses. The various types of clauses
2170 specify initializations, such as the binding of temporary
2171 variables, actions to be taken in the loop, stepping actions,
2172 and final cleanup.
2173
2174 Common Lisp specifies a certain general order of clauses in a
2175 loop:
2176
2177 @example
2178 (loop @var{name-clause}
2179 @var{var-clauses}@dots{}
2180 @var{action-clauses}@dots{})
2181 @end example
2182
2183 The @var{name-clause} optionally gives a name to the implicit
2184 block that surrounds the loop. By default, the implicit block
2185 is named @code{nil}. The @var{var-clauses} specify what
2186 variables should be bound during the loop, and how they should
2187 be modified or iterated throughout the course of the loop. The
2188 @var{action-clauses} are things to be done during the loop, such
2189 as computing, collecting, and returning values.
2190
2191 The Emacs version of the @code{loop} macro is less restrictive about
2192 the order of clauses, but things will behave most predictably if
2193 you put the variable-binding clauses @code{with}, @code{for}, and
2194 @code{repeat} before the action clauses. As in Common Lisp,
2195 @code{initially} and @code{finally} clauses can go anywhere.
2196
2197 Loops generally return @code{nil} by default, but you can cause
2198 them to return a value by using an accumulation clause like
2199 @code{collect}, an end-test clause like @code{always}, or an
2200 explicit @code{return} clause to jump out of the implicit block.
2201 (Because the loop body is enclosed in an implicit block, you can
2202 also use regular Lisp @code{return} or @code{return-from} to
2203 break out of the loop.)
2204 @end defspec
2205
2206 The following sections give some examples of the Loop Macro in
2207 action, and describe the particular loop clauses in great detail.
2208 Consult the second edition of Steele's @dfn{Common Lisp, the Language},
2209 for additional discussion and examples of the @code{loop} macro.
2210
2211 @node Loop Examples, For Clauses, Loop Basics, Loop Facility
2212 @subsection Loop Examples
2213
2214 @noindent
2215 Before listing the full set of clauses that are allowed, let's
2216 look at a few example loops just to get a feel for the @code{loop}
2217 language.
2218
2219 @example
2220 (loop for buf in (buffer-list)
2221 collect (buffer-file-name buf))
2222 @end example
2223
2224 @noindent
2225 This loop iterates over all Emacs buffers, using the list
2226 returned by @code{buffer-list}. For each buffer @code{buf},
2227 it calls @code{buffer-file-name} and collects the results into
2228 a list, which is then returned from the @code{loop} construct.
2229 The result is a list of the file names of all the buffers in
2230 Emacs' memory. The words @code{for}, @code{in}, and @code{collect}
2231 are reserved words in the @code{loop} language.
2232
2233 @example
2234 (loop repeat 20 do (insert "Yowsa\n"))
2235 @end example
2236
2237 @noindent
2238 This loop inserts the phrase ``Yowsa'' twenty times in the
2239 current buffer.
2240
2241 @example
2242 (loop until (eobp) do (munch-line) (forward-line 1))
2243 @end example
2244
2245 @noindent
2246 This loop calls @code{munch-line} on every line until the end
2247 of the buffer. If point is already at the end of the buffer,
2248 the loop exits immediately.
2249
2250 @example
2251 (loop do (munch-line) until (eobp) do (forward-line 1))
2252 @end example
2253
2254 @noindent
2255 This loop is similar to the above one, except that @code{munch-line}
2256 is always called at least once.
2257
2258 @example
2259 (loop for x from 1 to 100
2260 for y = (* x x)
2261 until (>= y 729)
2262 finally return (list x (= y 729)))
2263 @end example
2264
2265 @noindent
2266 This more complicated loop searches for a number @code{x} whose
2267 square is 729. For safety's sake it only examines @code{x}
2268 values up to 100; dropping the phrase @samp{to 100} would
2269 cause the loop to count upwards with no limit. The second
2270 @code{for} clause defines @code{y} to be the square of @code{x}
2271 within the loop; the expression after the @code{=} sign is
2272 reevaluated each time through the loop. The @code{until}
2273 clause gives a condition for terminating the loop, and the
2274 @code{finally} clause says what to do when the loop finishes.
2275 (This particular example was written less concisely than it
2276 could have been, just for the sake of illustration.)
2277
2278 Note that even though this loop contains three clauses (two
2279 @code{for}s and an @code{until}) that would have been enough to
2280 define loops all by themselves, it still creates a single loop
2281 rather than some sort of triple-nested loop. You must explicitly
2282 nest your @code{loop} constructs if you want nested loops.
2283
2284 @node For Clauses, Iteration Clauses, Loop Examples, Loop Facility
2285 @subsection For Clauses
2286
2287 @noindent
2288 Most loops are governed by one or more @code{for} clauses.
2289 A @code{for} clause simultaneously describes variables to be
2290 bound, how those variables are to be stepped during the loop,
2291 and usually an end condition based on those variables.
2292
2293 The word @code{as} is a synonym for the word @code{for}. This
2294 word is followed by a variable name, then a word like @code{from}
2295 or @code{across} that describes the kind of iteration desired.
2296 In Common Lisp, the phrase @code{being the} sometimes precedes
2297 the type of iteration; in this package both @code{being} and
2298 @code{the} are optional. The word @code{each} is a synonym
2299 for @code{the}, and the word that follows it may be singular
2300 or plural: @samp{for x being the elements of y} or
2301 @samp{for x being each element of y}. Which form you use
2302 is purely a matter of style.
2303
2304 The variable is bound around the loop as if by @code{let}:
2305
2306 @example
2307 (setq i 'happy)
2308 (loop for i from 1 to 10 do (do-something-with i))
2309 i
2310 @result{} happy
2311 @end example
2312
2313 @table @code
2314 @item for @var{var} from @var{expr1} to @var{expr2} by @var{expr3}
2315 This type of @code{for} clause creates a counting loop. Each of
2316 the three sub-terms is optional, though there must be at least one
2317 term so that the clause is marked as a counting clause.
2318
2319 The three expressions are the starting value, the ending value, and
2320 the step value, respectively, of the variable. The loop counts
2321 upwards by default (@var{expr3} must be positive), from @var{expr1}
2322 to @var{expr2} inclusively. If you omit the @code{from} term, the
2323 loop counts from zero; if you omit the @code{to} term, the loop
2324 counts forever without stopping (unless stopped by some other
2325 loop clause, of course); if you omit the @code{by} term, the loop
2326 counts in steps of one.
2327
2328 You can replace the word @code{from} with @code{upfrom} or
2329 @code{downfrom} to indicate the direction of the loop. Likewise,
2330 you can replace @code{to} with @code{upto} or @code{downto}.
2331 For example, @samp{for x from 5 downto 1} executes five times
2332 with @code{x} taking on the integers from 5 down to 1 in turn.
2333 Also, you can replace @code{to} with @code{below} or @code{above},
2334 which are like @code{upto} and @code{downto} respectively except
2335 that they are exclusive rather than inclusive limits:
2336
2337 @example
2338 (loop for x to 10 collect x)
2339 @result{} (0 1 2 3 4 5 6 7 8 9 10)
2340 (loop for x below 10 collect x)
2341 @result{} (0 1 2 3 4 5 6 7 8 9)
2342 @end example
2343
2344 The @code{by} value is always positive, even for downward-counting
2345 loops. Some sort of @code{from} value is required for downward
2346 loops; @samp{for x downto 5} is not a valid loop clause all by
2347 itself.
2348
2349 @item for @var{var} in @var{list} by @var{function}
2350 This clause iterates @var{var} over all the elements of @var{list},
2351 in turn. If you specify the @code{by} term, then @var{function}
2352 is used to traverse the list instead of @code{cdr}; it must be a
2353 function taking one argument. For example:
2354
2355 @example
2356 (loop for x in '(1 2 3 4 5 6) collect (* x x))
2357 @result{} (1 4 9 16 25 36)
2358 (loop for x in '(1 2 3 4 5 6) by 'cddr collect (* x x))
2359 @result{} (1 9 25)
2360 @end example
2361
2362 @item for @var{var} on @var{list} by @var{function}
2363 This clause iterates @var{var} over all the cons cells of @var{list}.
2364
2365 @example
2366 (loop for x on '(1 2 3 4) collect x)
2367 @result{} ((1 2 3 4) (2 3 4) (3 4) (4))
2368 @end example
2369
2370 With @code{by}, there is no real reason that the @code{on} expression
2371 must be a list. For example:
2372
2373 @example
2374 (loop for x on first-animal by 'next-animal collect x)
2375 @end example
2376
2377 @noindent
2378 where @code{(next-animal x)} takes an ``animal'' @var{x} and returns
2379 the next in the (assumed) sequence of animals, or @code{nil} if
2380 @var{x} was the last animal in the sequence.
2381
2382 @item for @var{var} in-ref @var{list} by @var{function}
2383 This is like a regular @code{in} clause, but @var{var} becomes
2384 a @code{setf}-able ``reference'' onto the elements of the list
2385 rather than just a temporary variable. For example,
2386
2387 @example
2388 (loop for x in-ref my-list do (incf x))
2389 @end example
2390
2391 @noindent
2392 increments every element of @code{my-list} in place. This clause
2393 is an extension to standard Common Lisp.
2394
2395 @item for @var{var} across @var{array}
2396 This clause iterates @var{var} over all the elements of @var{array},
2397 which may be a vector or a string.
2398
2399 @example
2400 (loop for x across "aeiou"
2401 do (use-vowel (char-to-string x)))
2402 @end example
2403
2404 @item for @var{var} across-ref @var{array}
2405 This clause iterates over an array, with @var{var} a @code{setf}-able
2406 reference onto the elements; see @code{in-ref} above.
2407
2408 @item for @var{var} being the elements of @var{sequence}
2409 This clause iterates over the elements of @var{sequence}, which may
2410 be a list, vector, or string. Since the type must be determined
2411 at run-time, this is somewhat less efficient than @code{in} or
2412 @code{across}. The clause may be followed by the additional term
2413 @samp{using (index @var{var2})} to cause @var{var2} to be bound to
2414 the successive indices (starting at 0) of the elements.
2415
2416 This clause type is taken from older versions of the @code{loop} macro,
2417 and is not present in modern Common Lisp. The @samp{using (sequence ...)}
2418 term of the older macros is not supported.
2419
2420 @item for @var{var} being the elements of-ref @var{sequence}
2421 This clause iterates over a sequence, with @var{var} a @code{setf}-able
2422 reference onto the elements; see @code{in-ref} above.
2423
2424 @item for @var{var} being the symbols [of @var{obarray}]
2425 This clause iterates over symbols, either over all interned symbols
2426 or over all symbols in @var{obarray}. The loop is executed with
2427 @var{var} bound to each symbol in turn. The symbols are visited in
2428 an unspecified order.
2429
2430 As an example,
2431
2432 @example
2433 (loop for sym being the symbols
2434 when (fboundp sym)
2435 when (string-match "^map" (symbol-name sym))
2436 collect sym)
2437 @end example
2438
2439 @noindent
2440 returns a list of all the functions whose names begin with @samp{map}.
2441
2442 The Common Lisp words @code{external-symbols} and @code{present-symbols}
2443 are also recognized but are equivalent to @code{symbols} in Emacs Lisp.
2444
2445 Due to a minor implementation restriction, it will not work to have
2446 more than one @code{for} clause iterating over symbols, hash tables,
2447 keymaps, overlays, or intervals in a given @code{loop}. Fortunately,
2448 it would rarely if ever be useful to do so. It @emph{is} valid to mix
2449 one of these types of clauses with other clauses like @code{for ... to}
2450 or @code{while}.
2451
2452 @item for @var{var} being the hash-keys of @var{hash-table}
2453 This clause iterates over the entries in @var{hash-table}. For each
2454 hash table entry, @var{var} is bound to the entry's key. If you write
2455 @samp{the hash-values} instead, @var{var} is bound to the values
2456 of the entries. The clause may be followed by the additional
2457 term @samp{using (hash-values @var{var2})} (where @code{hash-values}
2458 is the opposite word of the word following @code{the}) to cause
2459 @var{var} and @var{var2} to be bound to the two parts of each
2460 hash table entry.
2461
2462 @item for @var{var} being the key-codes of @var{keymap}
2463 This clause iterates over the entries in @var{keymap}.
2464 The iteration does not enter nested keymaps but does enter inherited
2465 (parent) keymaps.
2466 You can use @samp{the key-bindings} to access the commands bound to
2467 the keys rather than the key codes, and you can add a @code{using}
2468 clause to access both the codes and the bindings together.
2469
2470 @item for @var{var} being the key-seqs of @var{keymap}
2471 This clause iterates over all key sequences defined by @var{keymap}
2472 and its nested keymaps, where @var{var} takes on values which are
2473 vectors. The strings or vectors
2474 are reused for each iteration, so you must copy them if you wish to keep
2475 them permanently. You can add a @samp{using (key-bindings ...)}
2476 clause to get the command bindings as well.
2477
2478 @item for @var{var} being the overlays [of @var{buffer}] @dots{}
2479 This clause iterates over the ``overlays'' of a buffer
2480 (the clause @code{extents} is synonymous
2481 with @code{overlays}). If the @code{of} term is omitted, the current
2482 buffer is used.
2483 This clause also accepts optional @samp{from @var{pos}} and
2484 @samp{to @var{pos}} terms, limiting the clause to overlays which
2485 overlap the specified region.
2486
2487 @item for @var{var} being the intervals [of @var{buffer}] @dots{}
2488 This clause iterates over all intervals of a buffer with constant
2489 text properties. The variable @var{var} will be bound to conses
2490 of start and end positions, where one start position is always equal
2491 to the previous end position. The clause allows @code{of},
2492 @code{from}, @code{to}, and @code{property} terms, where the latter
2493 term restricts the search to just the specified property. The
2494 @code{of} term may specify either a buffer or a string.
2495
2496 @item for @var{var} being the frames
2497 This clause iterates over all frames, i.e., X window system windows
2498 open on Emacs files. The
2499 clause @code{screens} is a synonym for @code{frames}. The frames
2500 are visited in @code{next-frame} order starting from
2501 @code{selected-frame}.
2502
2503 @item for @var{var} being the windows [of @var{frame}]
2504 This clause iterates over the windows (in the Emacs sense) of
2505 the current frame, or of the specified @var{frame}.
2506
2507 @item for @var{var} being the buffers
2508 This clause iterates over all buffers in Emacs. It is equivalent
2509 to @samp{for @var{var} in (buffer-list)}.
2510
2511 @item for @var{var} = @var{expr1} then @var{expr2}
2512 This clause does a general iteration. The first time through
2513 the loop, @var{var} will be bound to @var{expr1}. On the second
2514 and successive iterations it will be set by evaluating @var{expr2}
2515 (which may refer to the old value of @var{var}). For example,
2516 these two loops are effectively the same:
2517
2518 @example
2519 (loop for x on my-list by 'cddr do ...)
2520 (loop for x = my-list then (cddr x) while x do ...)
2521 @end example
2522
2523 Note that this type of @code{for} clause does not imply any sort
2524 of terminating condition; the above example combines it with a
2525 @code{while} clause to tell when to end the loop.
2526
2527 If you omit the @code{then} term, @var{expr1} is used both for
2528 the initial setting and for successive settings:
2529
2530 @example
2531 (loop for x = (random) when (> x 0) return x)
2532 @end example
2533
2534 @noindent
2535 This loop keeps taking random numbers from the @code{(random)}
2536 function until it gets a positive one, which it then returns.
2537 @end table
2538
2539 If you include several @code{for} clauses in a row, they are
2540 treated sequentially (as if by @code{let*} and @code{setq}).
2541 You can instead use the word @code{and} to link the clauses,
2542 in which case they are processed in parallel (as if by @code{let}
2543 and @code{psetq}).
2544
2545 @example
2546 (loop for x below 5 for y = nil then x collect (list x y))
2547 @result{} ((0 nil) (1 1) (2 2) (3 3) (4 4))
2548 (loop for x below 5 and y = nil then x collect (list x y))
2549 @result{} ((0 nil) (1 0) (2 1) (3 2) (4 3))
2550 @end example
2551
2552 @noindent
2553 In the first loop, @code{y} is set based on the value of @code{x}
2554 that was just set by the previous clause; in the second loop,
2555 @code{x} and @code{y} are set simultaneously so @code{y} is set
2556 based on the value of @code{x} left over from the previous time
2557 through the loop.
2558
2559 Another feature of the @code{loop} macro is @dfn{destructuring},
2560 similar in concept to the destructuring provided by @code{defmacro}.
2561 The @var{var} part of any @code{for} clause can be given as a list
2562 of variables instead of a single variable. The values produced
2563 during loop execution must be lists; the values in the lists are
2564 stored in the corresponding variables.
2565
2566 @example
2567 (loop for (x y) in '((2 3) (4 5) (6 7)) collect (+ x y))
2568 @result{} (5 9 13)
2569 @end example
2570
2571 In loop destructuring, if there are more values than variables
2572 the trailing values are ignored, and if there are more variables
2573 than values the trailing variables get the value @code{nil}.
2574 If @code{nil} is used as a variable name, the corresponding
2575 values are ignored. Destructuring may be nested, and dotted
2576 lists of variables like @code{(x . y)} are allowed.
2577
2578 @node Iteration Clauses, Accumulation Clauses, For Clauses, Loop Facility
2579 @subsection Iteration Clauses
2580
2581 @noindent
2582 Aside from @code{for} clauses, there are several other loop clauses
2583 that control the way the loop operates. They might be used by
2584 themselves, or in conjunction with one or more @code{for} clauses.
2585
2586 @table @code
2587 @item repeat @var{integer}
2588 This clause simply counts up to the specified number using an
2589 internal temporary variable. The loops
2590
2591 @example
2592 (loop repeat (1+ n) do ...)
2593 (loop for temp to n do ...)
2594 @end example
2595
2596 @noindent
2597 are identical except that the second one forces you to choose
2598 a name for a variable you aren't actually going to use.
2599
2600 @item while @var{condition}
2601 This clause stops the loop when the specified condition (any Lisp
2602 expression) becomes @code{nil}. For example, the following two
2603 loops are equivalent, except for the implicit @code{nil} block
2604 that surrounds the second one:
2605
2606 @example
2607 (while @var{cond} @var{forms}@dots{})
2608 (loop while @var{cond} do @var{forms}@dots{})
2609 @end example
2610
2611 @item until @var{condition}
2612 This clause stops the loop when the specified condition is true,
2613 i.e., non-@code{nil}.
2614
2615 @item always @var{condition}
2616 This clause stops the loop when the specified condition is @code{nil}.
2617 Unlike @code{while}, it stops the loop using @code{return nil} so that
2618 the @code{finally} clauses are not executed. If all the conditions
2619 were non-@code{nil}, the loop returns @code{t}:
2620
2621 @example
2622 (if (loop for size in size-list always (> size 10))
2623 (some-big-sizes)
2624 (no-big-sizes))
2625 @end example
2626
2627 @item never @var{condition}
2628 This clause is like @code{always}, except that the loop returns
2629 @code{t} if any conditions were false, or @code{nil} otherwise.
2630
2631 @item thereis @var{condition}
2632 This clause stops the loop when the specified form is non-@code{nil};
2633 in this case, it returns that non-@code{nil} value. If all the
2634 values were @code{nil}, the loop returns @code{nil}.
2635 @end table
2636
2637 @node Accumulation Clauses, Other Clauses, Iteration Clauses, Loop Facility
2638 @subsection Accumulation Clauses
2639
2640 @noindent
2641 These clauses cause the loop to accumulate information about the
2642 specified Lisp @var{form}. The accumulated result is returned
2643 from the loop unless overridden, say, by a @code{return} clause.
2644
2645 @table @code
2646 @item collect @var{form}
2647 This clause collects the values of @var{form} into a list. Several
2648 examples of @code{collect} appear elsewhere in this manual.
2649
2650 The word @code{collecting} is a synonym for @code{collect}, and
2651 likewise for the other accumulation clauses.
2652
2653 @item append @var{form}
2654 This clause collects lists of values into a result list using
2655 @code{append}.
2656
2657 @item nconc @var{form}
2658 This clause collects lists of values into a result list by
2659 destructively modifying the lists rather than copying them.
2660
2661 @item concat @var{form}
2662 This clause concatenates the values of the specified @var{form}
2663 into a string. (It and the following clause are extensions to
2664 standard Common Lisp.)
2665
2666 @item vconcat @var{form}
2667 This clause concatenates the values of the specified @var{form}
2668 into a vector.
2669
2670 @item count @var{form}
2671 This clause counts the number of times the specified @var{form}
2672 evaluates to a non-@code{nil} value.
2673
2674 @item sum @var{form}
2675 This clause accumulates the sum of the values of the specified
2676 @var{form}, which must evaluate to a number.
2677
2678 @item maximize @var{form}
2679 This clause accumulates the maximum value of the specified @var{form},
2680 which must evaluate to a number. The return value is undefined if
2681 @code{maximize} is executed zero times.
2682
2683 @item minimize @var{form}
2684 This clause accumulates the minimum value of the specified @var{form}.
2685 @end table
2686
2687 Accumulation clauses can be followed by @samp{into @var{var}} to
2688 cause the data to be collected into variable @var{var} (which is
2689 automatically @code{let}-bound during the loop) rather than an
2690 unnamed temporary variable. Also, @code{into} accumulations do
2691 not automatically imply a return value. The loop must use some
2692 explicit mechanism, such as @code{finally return}, to return
2693 the accumulated result.
2694
2695 It is valid for several accumulation clauses of the same type to
2696 accumulate into the same place. From Steele:
2697
2698 @example
2699 (loop for name in '(fred sue alice joe june)
2700 for kids in '((bob ken) () () (kris sunshine) ())
2701 collect name
2702 append kids)
2703 @result{} (fred bob ken sue alice joe kris sunshine june)
2704 @end example
2705
2706 @node Other Clauses, , Accumulation Clauses, Loop Facility
2707 @subsection Other Clauses
2708
2709 @noindent
2710 This section describes the remaining loop clauses.
2711
2712 @table @code
2713 @item with @var{var} = @var{value}
2714 This clause binds a variable to a value around the loop, but
2715 otherwise leaves the variable alone during the loop. The following
2716 loops are basically equivalent:
2717
2718 @example
2719 (loop with x = 17 do ...)
2720 (let ((x 17)) (loop do ...))
2721 (loop for x = 17 then x do ...)
2722 @end example
2723
2724 Naturally, the variable @var{var} might be used for some purpose
2725 in the rest of the loop. For example:
2726
2727 @example
2728 (loop for x in my-list with res = nil do (push x res)
2729 finally return res)
2730 @end example
2731
2732 This loop inserts the elements of @code{my-list} at the front of
2733 a new list being accumulated in @code{res}, then returns the
2734 list @code{res} at the end of the loop. The effect is similar
2735 to that of a @code{collect} clause, but the list gets reversed
2736 by virtue of the fact that elements are being pushed onto the
2737 front of @code{res} rather than the end.
2738
2739 If you omit the @code{=} term, the variable is initialized to
2740 @code{nil}. (Thus the @samp{= nil} in the above example is
2741 unnecessary.)
2742
2743 Bindings made by @code{with} are sequential by default, as if
2744 by @code{let*}. Just like @code{for} clauses, @code{with} clauses
2745 can be linked with @code{and} to cause the bindings to be made by
2746 @code{let} instead.
2747
2748 @item if @var{condition} @var{clause}
2749 This clause executes the following loop clause only if the specified
2750 condition is true. The following @var{clause} should be an accumulation,
2751 @code{do}, @code{return}, @code{if}, or @code{unless} clause.
2752 Several clauses may be linked by separating them with @code{and}.
2753 These clauses may be followed by @code{else} and a clause or clauses
2754 to execute if the condition was false. The whole construct may
2755 optionally be followed by the word @code{end} (which may be used to
2756 disambiguate an @code{else} or @code{and} in a nested @code{if}).
2757
2758 The actual non-@code{nil} value of the condition form is available
2759 by the name @code{it} in the ``then'' part. For example:
2760
2761 @example
2762 (setq funny-numbers '(6 13 -1))
2763 @result{} (6 13 -1)
2764 (loop for x below 10
2765 if (oddp x)
2766 collect x into odds
2767 and if (memq x funny-numbers) return (cdr it) end
2768 else
2769 collect x into evens
2770 finally return (vector odds evens))
2771 @result{} [(1 3 5 7 9) (0 2 4 6 8)]
2772 (setq funny-numbers '(6 7 13 -1))
2773 @result{} (6 7 13 -1)
2774 (loop <@r{same thing again}>)
2775 @result{} (13 -1)
2776 @end example
2777
2778 Note the use of @code{and} to put two clauses into the ``then''
2779 part, one of which is itself an @code{if} clause. Note also that
2780 @code{end}, while normally optional, was necessary here to make
2781 it clear that the @code{else} refers to the outermost @code{if}
2782 clause. In the first case, the loop returns a vector of lists
2783 of the odd and even values of @var{x}. In the second case, the
2784 odd number 7 is one of the @code{funny-numbers} so the loop
2785 returns early; the actual returned value is based on the result
2786 of the @code{memq} call.
2787
2788 @item when @var{condition} @var{clause}
2789 This clause is just a synonym for @code{if}.
2790
2791 @item unless @var{condition} @var{clause}
2792 The @code{unless} clause is just like @code{if} except that the
2793 sense of the condition is reversed.
2794
2795 @item named @var{name}
2796 This clause gives a name other than @code{nil} to the implicit
2797 block surrounding the loop. The @var{name} is the symbol to be
2798 used as the block name.
2799
2800 @item initially [do] @var{forms}...
2801 This keyword introduces one or more Lisp forms which will be
2802 executed before the loop itself begins (but after any variables
2803 requested by @code{for} or @code{with} have been bound to their
2804 initial values). @code{initially} clauses can appear anywhere;
2805 if there are several, they are executed in the order they appear
2806 in the loop. The keyword @code{do} is optional.
2807
2808 @item finally [do] @var{forms}...
2809 This introduces Lisp forms which will be executed after the loop
2810 finishes (say, on request of a @code{for} or @code{while}).
2811 @code{initially} and @code{finally} clauses may appear anywhere
2812 in the loop construct, but they are executed (in the specified
2813 order) at the beginning or end, respectively, of the loop.
2814
2815 @item finally return @var{form}
2816 This says that @var{form} should be executed after the loop
2817 is done to obtain a return value. (Without this, or some other
2818 clause like @code{collect} or @code{return}, the loop will simply
2819 return @code{nil}.) Variables bound by @code{for}, @code{with},
2820 or @code{into} will still contain their final values when @var{form}
2821 is executed.
2822
2823 @item do @var{forms}...
2824 The word @code{do} may be followed by any number of Lisp expressions
2825 which are executed as an implicit @code{progn} in the body of the
2826 loop. Many of the examples in this section illustrate the use of
2827 @code{do}.
2828
2829 @item return @var{form}
2830 This clause causes the loop to return immediately. The following
2831 Lisp form is evaluated to give the return value of the @code{loop}
2832 form. The @code{finally} clauses, if any, are not executed.
2833 Of course, @code{return} is generally used inside an @code{if} or
2834 @code{unless}, as its use in a top-level loop clause would mean
2835 the loop would never get to ``loop'' more than once.
2836
2837 The clause @samp{return @var{form}} is equivalent to
2838 @samp{do (return @var{form})} (or @code{return-from} if the loop
2839 was named). The @code{return} clause is implemented a bit more
2840 efficiently, though.
2841 @end table
2842
2843 While there is no high-level way to add user extensions to @code{loop}
2844 (comparable to @code{defsetf} for @code{setf}, say), this package
2845 does offer two properties called @code{cl-loop-handler} and
2846 @code{cl-loop-for-handler} which are functions to be called when
2847 a given symbol is encountered as a top-level loop clause or
2848 @code{for} clause, respectively. Consult the source code in
2849 file @file{cl-macs.el} for details.
2850
2851 This package's @code{loop} macro is compatible with that of Common
2852 Lisp, except that a few features are not implemented: @code{loop-finish}
2853 and data-type specifiers. Naturally, the @code{for} clauses which
2854 iterate over keymaps, overlays, intervals, frames, windows, and
2855 buffers are Emacs-specific extensions.
2856
2857 @node Multiple Values, , Loop Facility, Control Structure
2858 @section Multiple Values
2859
2860 @noindent
2861 Common Lisp functions can return zero or more results. Emacs Lisp
2862 functions, by contrast, always return exactly one result. This
2863 package makes no attempt to emulate Common Lisp multiple return
2864 values; Emacs versions of Common Lisp functions that return more
2865 than one value either return just the first value (as in
2866 @code{compiler-macroexpand}) or return a list of values (as in
2867 @code{get-setf-method}). This package @emph{does} define placeholders
2868 for the Common Lisp functions that work with multiple values, but
2869 in Emacs Lisp these functions simply operate on lists instead.
2870 The @code{values} form, for example, is a synonym for @code{list}
2871 in Emacs.
2872
2873 @defspec multiple-value-bind (var@dots{}) values-form forms@dots{}
2874 This form evaluates @var{values-form}, which must return a list of
2875 values. It then binds the @var{var}s to these respective values,
2876 as if by @code{let}, and then executes the body @var{forms}.
2877 If there are more @var{var}s than values, the extra @var{var}s
2878 are bound to @code{nil}. If there are fewer @var{var}s than
2879 values, the excess values are ignored.
2880 @end defspec
2881
2882 @defspec multiple-value-setq (var@dots{}) form
2883 This form evaluates @var{form}, which must return a list of values.
2884 It then sets the @var{var}s to these respective values, as if by
2885 @code{setq}. Extra @var{var}s or values are treated the same as
2886 in @code{multiple-value-bind}.
2887 @end defspec
2888
2889 The older Quiroz package attempted a more faithful (but still
2890 imperfect) emulation of Common Lisp multiple values. The old
2891 method ``usually'' simulated true multiple values quite well,
2892 but under certain circumstances would leave spurious return
2893 values in memory where a later, unrelated @code{multiple-value-bind}
2894 form would see them.
2895
2896 Since a perfect emulation is not feasible in Emacs Lisp, this
2897 package opts to keep it as simple and predictable as possible.
2898
2899 @node Macros, Declarations, Control Structure, Top
2900 @chapter Macros
2901
2902 @noindent
2903 This package implements the various Common Lisp features of
2904 @code{defmacro}, such as destructuring, @code{&environment},
2905 and @code{&body}. Top-level @code{&whole} is not implemented
2906 for @code{defmacro} due to technical difficulties.
2907 @xref{Argument Lists}.
2908
2909 Destructuring is made available to the user by way of the
2910 following macro:
2911
2912 @defspec destructuring-bind arglist expr forms@dots{}
2913 This macro expands to code which executes @var{forms}, with
2914 the variables in @var{arglist} bound to the list of values
2915 returned by @var{expr}. The @var{arglist} can include all
2916 the features allowed for @code{defmacro} argument lists,
2917 including destructuring. (The @code{&environment} keyword
2918 is not allowed.) The macro expansion will signal an error
2919 if @var{expr} returns a list of the wrong number of arguments
2920 or with incorrect keyword arguments.
2921 @end defspec
2922
2923 This package also includes the Common Lisp @code{define-compiler-macro}
2924 facility, which allows you to define compile-time expansions and
2925 optimizations for your functions.
2926
2927 @defspec define-compiler-macro name arglist forms@dots{}
2928 This form is similar to @code{defmacro}, except that it only expands
2929 calls to @var{name} at compile-time; calls processed by the Lisp
2930 interpreter are not expanded, nor are they expanded by the
2931 @code{macroexpand} function.
2932
2933 The argument list may begin with a @code{&whole} keyword and a
2934 variable. This variable is bound to the macro-call form itself,
2935 i.e., to a list of the form @samp{(@var{name} @var{args}@dots{})}.
2936 If the macro expander returns this form unchanged, then the
2937 compiler treats it as a normal function call. This allows
2938 compiler macros to work as optimizers for special cases of a
2939 function, leaving complicated cases alone.
2940
2941 For example, here is a simplified version of a definition that
2942 appears as a standard part of this package:
2943
2944 @example
2945 (define-compiler-macro member* (&whole form a list &rest keys)
2946 (if (and (null keys)
2947 (eq (car-safe a) 'quote)
2948 (not (floatp-safe (cadr a))))
2949 (list 'memq a list)
2950 form))
2951 @end example
2952
2953 @noindent
2954 This definition causes @code{(member* @var{a} @var{list})} to change
2955 to a call to the faster @code{memq} in the common case where @var{a}
2956 is a non-floating-point constant; if @var{a} is anything else, or
2957 if there are any keyword arguments in the call, then the original
2958 @code{member*} call is left intact. (The actual compiler macro
2959 for @code{member*} optimizes a number of other cases, including
2960 common @code{:test} predicates.)
2961 @end defspec
2962
2963 @defun compiler-macroexpand form
2964 This function is analogous to @code{macroexpand}, except that it
2965 expands compiler macros rather than regular macros. It returns
2966 @var{form} unchanged if it is not a call to a function for which
2967 a compiler macro has been defined, or if that compiler macro
2968 decided to punt by returning its @code{&whole} argument. Like
2969 @code{macroexpand}, it expands repeatedly until it reaches a form
2970 for which no further expansion is possible.
2971 @end defun
2972
2973 @xref{Macro Bindings}, for descriptions of the @code{macrolet}
2974 and @code{symbol-macrolet} forms for making ``local'' macro
2975 definitions.
2976
2977 @node Declarations, Symbols, Macros, Top
2978 @chapter Declarations
2979
2980 @noindent
2981 Common Lisp includes a complex and powerful ``declaration''
2982 mechanism that allows you to give the compiler special hints
2983 about the types of data that will be stored in particular variables,
2984 and about the ways those variables and functions will be used. This
2985 package defines versions of all the Common Lisp declaration forms:
2986 @code{declare}, @code{locally}, @code{proclaim}, @code{declaim},
2987 and @code{the}.
2988
2989 Most of the Common Lisp declarations are not currently useful in
2990 Emacs Lisp, as the byte-code system provides little opportunity
2991 to benefit from type information, and @code{special} declarations
2992 are redundant in a fully dynamically-scoped Lisp. A few
2993 declarations are meaningful when the optimizing byte
2994 compiler is being used, however. Under the earlier non-optimizing
2995 compiler, these declarations will effectively be ignored.
2996
2997 @defun proclaim decl-spec
2998 This function records a ``global'' declaration specified by
2999 @var{decl-spec}. Since @code{proclaim} is a function, @var{decl-spec}
3000 is evaluated and thus should normally be quoted.
3001 @end defun
3002
3003 @defspec declaim decl-specs@dots{}
3004 This macro is like @code{proclaim}, except that it takes any number
3005 of @var{decl-spec} arguments, and the arguments are unevaluated and
3006 unquoted. The @code{declaim} macro also puts an @code{(eval-when
3007 (compile load eval) ...)} around the declarations so that they will
3008 be registered at compile-time as well as at run-time. (This is vital,
3009 since normally the declarations are meant to influence the way the
3010 compiler treats the rest of the file that contains the @code{declaim}
3011 form.)
3012 @end defspec
3013
3014 @defspec declare decl-specs@dots{}
3015 This macro is used to make declarations within functions and other
3016 code. Common Lisp allows declarations in various locations, generally
3017 at the beginning of any of the many ``implicit @code{progn}s''
3018 throughout Lisp syntax, such as function bodies, @code{let} bodies,
3019 etc. Currently the only declaration understood by @code{declare}
3020 is @code{special}.
3021 @end defspec
3022
3023 @defspec locally declarations@dots{} forms@dots{}
3024 In this package, @code{locally} is no different from @code{progn}.
3025 @end defspec
3026
3027 @defspec the type form
3028 Type information provided by @code{the} is ignored in this package;
3029 in other words, @code{(the @var{type} @var{form})} is equivalent
3030 to @var{form}. Future versions of the optimizing byte-compiler may
3031 make use of this information.
3032
3033 For example, @code{mapcar} can map over both lists and arrays. It is
3034 hard for the compiler to expand @code{mapcar} into an in-line loop
3035 unless it knows whether the sequence will be a list or an array ahead
3036 of time. With @code{(mapcar 'car (the vector foo))}, a future
3037 compiler would have enough information to expand the loop in-line.
3038 For now, Emacs Lisp will treat the above code as exactly equivalent
3039 to @code{(mapcar 'car foo)}.
3040 @end defspec
3041
3042 Each @var{decl-spec} in a @code{proclaim}, @code{declaim}, or
3043 @code{declare} should be a list beginning with a symbol that says
3044 what kind of declaration it is. This package currently understands
3045 @code{special}, @code{inline}, @code{notinline}, @code{optimize},
3046 and @code{warn} declarations. (The @code{warn} declaration is an
3047 extension of standard Common Lisp.) Other Common Lisp declarations,
3048 such as @code{type} and @code{ftype}, are silently ignored.
3049
3050 @table @code
3051 @item special
3052 Since all variables in Emacs Lisp are ``special'' (in the Common
3053 Lisp sense), @code{special} declarations are only advisory. They
3054 simply tell the optimizing byte compiler that the specified
3055 variables are intentionally being referred to without being
3056 bound in the body of the function. The compiler normally emits
3057 warnings for such references, since they could be typographical
3058 errors for references to local variables.
3059
3060 The declaration @code{(declare (special @var{var1} @var{var2}))} is
3061 equivalent to @code{(defvar @var{var1}) (defvar @var{var2})} in the
3062 optimizing compiler, or to nothing at all in older compilers (which
3063 do not warn for non-local references).
3064
3065 In top-level contexts, it is generally better to write
3066 @code{(defvar @var{var})} than @code{(declaim (special @var{var}))},
3067 since @code{defvar} makes your intentions clearer. But the older
3068 byte compilers can not handle @code{defvar}s appearing inside of
3069 functions, while @code{(declare (special @var{var}))} takes care
3070 to work correctly with all compilers.
3071
3072 @item inline
3073 The @code{inline} @var{decl-spec} lists one or more functions
3074 whose bodies should be expanded ``in-line'' into calling functions
3075 whenever the compiler is able to arrange for it. For example,
3076 the Common Lisp function @code{cadr} is declared @code{inline}
3077 by this package so that the form @code{(cadr @var{x})} will
3078 expand directly into @code{(car (cdr @var{x}))} when it is called
3079 in user functions, for a savings of one (relatively expensive)
3080 function call.
3081
3082 The following declarations are all equivalent. Note that the
3083 @code{defsubst} form is a convenient way to define a function
3084 and declare it inline all at once.
3085
3086 @example
3087 (declaim (inline foo bar))
3088 (eval-when (compile load eval) (proclaim '(inline foo bar)))
3089 (defsubst foo (...) ...) ; instead of defun
3090 @end example
3091
3092 @strong{Please note:} this declaration remains in effect after the
3093 containing source file is done. It is correct to use it to
3094 request that a function you have defined should be inlined,
3095 but it is impolite to use it to request inlining of an external
3096 function.
3097
3098 In Common Lisp, it is possible to use @code{(declare (inline @dots{}))}
3099 before a particular call to a function to cause just that call to
3100 be inlined; the current byte compilers provide no way to implement
3101 this, so @code{(declare (inline @dots{}))} is currently ignored by
3102 this package.
3103
3104 @item notinline
3105 The @code{notinline} declaration lists functions which should
3106 not be inlined after all; it cancels a previous @code{inline}
3107 declaration.
3108
3109 @item optimize
3110 This declaration controls how much optimization is performed by
3111 the compiler. Naturally, it is ignored by the earlier non-optimizing
3112 compilers.
3113
3114 The word @code{optimize} is followed by any number of lists like
3115 @code{(speed 3)} or @code{(safety 2)}. Common Lisp defines several
3116 optimization ``qualities''; this package ignores all but @code{speed}
3117 and @code{safety}. The value of a quality should be an integer from
3118 0 to 3, with 0 meaning ``unimportant'' and 3 meaning ``very important.''
3119 The default level for both qualities is 1.
3120
3121 In this package, with the optimizing compiler, the
3122 @code{speed} quality is tied to the @code{byte-compile-optimize}
3123 flag, which is set to @code{nil} for @code{(speed 0)} and to
3124 @code{t} for higher settings; and the @code{safety} quality is
3125 tied to the @code{byte-compile-delete-errors} flag, which is
3126 set to @code{t} for @code{(safety 3)} and to @code{nil} for all
3127 lower settings. (The latter flag controls whether the compiler
3128 is allowed to optimize out code whose only side-effect could
3129 be to signal an error, e.g., rewriting @code{(progn foo bar)} to
3130 @code{bar} when it is not known whether @code{foo} will be bound
3131 at run-time.)
3132
3133 Note that even compiling with @code{(safety 0)}, the Emacs
3134 byte-code system provides sufficient checking to prevent real
3135 harm from being done. For example, barring serious bugs in
3136 Emacs itself, Emacs will not crash with a segmentation fault
3137 just because of an error in a fully-optimized Lisp program.
3138
3139 The @code{optimize} declaration is normally used in a top-level
3140 @code{proclaim} or @code{declaim} in a file; Common Lisp allows
3141 it to be used with @code{declare} to set the level of optimization
3142 locally for a given form, but this will not work correctly with the
3143 current version of the optimizing compiler. (The @code{declare}
3144 will set the new optimization level, but that level will not
3145 automatically be unset after the enclosing form is done.)
3146
3147 @item warn
3148 This declaration controls what sorts of warnings are generated
3149 by the byte compiler. Again, only the optimizing compiler
3150 generates warnings. The word @code{warn} is followed by any
3151 number of ``warning qualities,'' similar in form to optimization
3152 qualities. The currently supported warning types are
3153 @code{redefine}, @code{callargs}, @code{unresolved}, and
3154 @code{free-vars}; in the current system, a value of 0 will
3155 disable these warnings and any higher value will enable them.
3156 See the documentation for the optimizing byte compiler for details.
3157 @end table
3158
3159 @node Symbols, Numbers, Declarations, Top
3160 @chapter Symbols
3161
3162 @noindent
3163 This package defines several symbol-related features that were
3164 missing from Emacs Lisp.
3165
3166 @menu
3167 * Property Lists:: `get*', `remprop', `getf', `remf'
3168 * Creating Symbols:: `gensym', `gentemp'
3169 @end menu
3170
3171 @node Property Lists, Creating Symbols, Symbols, Symbols
3172 @section Property Lists
3173
3174 @noindent
3175 These functions augment the standard Emacs Lisp functions @code{get}
3176 and @code{put} for operating on properties attached to symbols.
3177 There are also functions for working with property lists as
3178 first-class data structures not attached to particular symbols.
3179
3180 @defun get* symbol property &optional default
3181 This function is like @code{get}, except that if the property is
3182 not found, the @var{default} argument provides the return value.
3183 (The Emacs Lisp @code{get} function always uses @code{nil} as
3184 the default; this package's @code{get*} is equivalent to Common
3185 Lisp's @code{get}.)
3186
3187 The @code{get*} function is @code{setf}-able; when used in this
3188 fashion, the @var{default} argument is allowed but ignored.
3189 @end defun
3190
3191 @defun remprop symbol property
3192 This function removes the entry for @var{property} from the property
3193 list of @var{symbol}. It returns a true value if the property was
3194 indeed found and removed, or @code{nil} if there was no such property.
3195 (This function was probably omitted from Emacs originally because,
3196 since @code{get} did not allow a @var{default}, it was very difficult
3197 to distinguish between a missing property and a property whose value
3198 was @code{nil}; thus, setting a property to @code{nil} was close
3199 enough to @code{remprop} for most purposes.)
3200 @end defun
3201
3202 @defun getf place property &optional default
3203 This function scans the list @var{place} as if it were a property
3204 list, i.e., a list of alternating property names and values. If
3205 an even-numbered element of @var{place} is found which is @code{eq}
3206 to @var{property}, the following odd-numbered element is returned.
3207 Otherwise, @var{default} is returned (or @code{nil} if no default
3208 is given).
3209
3210 In particular,
3211
3212 @example
3213 (get sym prop) @equiv{} (getf (symbol-plist sym) prop)
3214 @end example
3215
3216 It is valid to use @code{getf} as a @code{setf} place, in which case
3217 its @var{place} argument must itself be a valid @code{setf} place.
3218 The @var{default} argument, if any, is ignored in this context.
3219 The effect is to change (via @code{setcar}) the value cell in the
3220 list that corresponds to @var{property}, or to cons a new property-value
3221 pair onto the list if the property is not yet present.
3222
3223 @example
3224 (put sym prop val) @equiv{} (setf (getf (symbol-plist sym) prop) val)
3225 @end example
3226
3227 The @code{get} and @code{get*} functions are also @code{setf}-able.
3228 The fact that @code{default} is ignored can sometimes be useful:
3229
3230 @example
3231 (incf (get* 'foo 'usage-count 0))
3232 @end example
3233
3234 Here, symbol @code{foo}'s @code{usage-count} property is incremented
3235 if it exists, or set to 1 (an incremented 0) otherwise.
3236
3237 When not used as a @code{setf} form, @code{getf} is just a regular
3238 function and its @var{place} argument can actually be any Lisp
3239 expression.
3240 @end defun
3241
3242 @defspec remf place property
3243 This macro removes the property-value pair for @var{property} from
3244 the property list stored at @var{place}, which is any @code{setf}-able
3245 place expression. It returns true if the property was found. Note
3246 that if @var{property} happens to be first on the list, this will
3247 effectively do a @code{(setf @var{place} (cddr @var{place}))},
3248 whereas if it occurs later, this simply uses @code{setcdr} to splice
3249 out the property and value cells.
3250 @end defspec
3251
3252 @iftex
3253 @secno=2
3254 @end iftex
3255
3256 @node Creating Symbols, , Property Lists, Symbols
3257 @section Creating Symbols
3258
3259 @noindent
3260 These functions create unique symbols, typically for use as
3261 temporary variables.
3262
3263 @defun gensym &optional x
3264 This function creates a new, uninterned symbol (using @code{make-symbol})
3265 with a unique name. (The name of an uninterned symbol is relevant
3266 only if the symbol is printed.) By default, the name is generated
3267 from an increasing sequence of numbers, @samp{G1000}, @samp{G1001},
3268 @samp{G1002}, etc. If the optional argument @var{x} is a string, that
3269 string is used as a prefix instead of @samp{G}. Uninterned symbols
3270 are used in macro expansions for temporary variables, to ensure that
3271 their names will not conflict with ``real'' variables in the user's
3272 code.
3273 @end defun
3274
3275 @defvar *gensym-counter*
3276 This variable holds the counter used to generate @code{gensym} names.
3277 It is incremented after each use by @code{gensym}. In Common Lisp
3278 this is initialized with 0, but this package initializes it with a
3279 random (time-dependent) value to avoid trouble when two files that
3280 each used @code{gensym} in their compilation are loaded together.
3281 (Uninterned symbols become interned when the compiler writes them
3282 out to a file and the Emacs loader loads them, so their names have to
3283 be treated a bit more carefully than in Common Lisp where uninterned
3284 symbols remain uninterned after loading.)
3285 @end defvar
3286
3287 @defun gentemp &optional x
3288 This function is like @code{gensym}, except that it produces a new
3289 @emph{interned} symbol. If the symbol that is generated already
3290 exists, the function keeps incrementing the counter and trying
3291 again until a new symbol is generated.
3292 @end defun
3293
3294 The Quiroz @file{cl.el} package also defined a @code{defkeyword}
3295 form for creating self-quoting keyword symbols. This package
3296 automatically creates all keywords that are called for by
3297 @code{&key} argument specifiers, and discourages the use of
3298 keywords as data unrelated to keyword arguments, so the
3299 @code{defkeyword} form has been discontinued.
3300
3301 @iftex
3302 @chapno=11
3303 @end iftex
3304
3305 @node Numbers, Sequences, Symbols, Top
3306 @chapter Numbers
3307
3308 @noindent
3309 This section defines a few simple Common Lisp operations on numbers
3310 which were left out of Emacs Lisp.
3311
3312 @menu
3313 * Predicates on Numbers:: `plusp', `oddp', `floatp-safe', etc.
3314 * Numerical Functions:: `abs', `floor*', etc.
3315 * Random Numbers:: `random*', `make-random-state'
3316 * Implementation Parameters:: `most-positive-float'
3317 @end menu
3318
3319 @iftex
3320 @secno=1
3321 @end iftex
3322
3323 @node Predicates on Numbers, Numerical Functions, Numbers, Numbers
3324 @section Predicates on Numbers
3325
3326 @noindent
3327 These functions return @code{t} if the specified condition is
3328 true of the numerical argument, or @code{nil} otherwise.
3329
3330 @defun plusp number
3331 This predicate tests whether @var{number} is positive. It is an
3332 error if the argument is not a number.
3333 @end defun
3334
3335 @defun minusp number
3336 This predicate tests whether @var{number} is negative. It is an
3337 error if the argument is not a number.
3338 @end defun
3339
3340 @defun oddp integer
3341 This predicate tests whether @var{integer} is odd. It is an
3342 error if the argument is not an integer.
3343 @end defun
3344
3345 @defun evenp integer
3346 This predicate tests whether @var{integer} is even. It is an
3347 error if the argument is not an integer.
3348 @end defun
3349
3350 @defun floatp-safe object
3351 This predicate tests whether @var{object} is a floating-point
3352 number. On systems that support floating-point, this is equivalent
3353 to @code{floatp}. On other systems, this always returns @code{nil}.
3354 @end defun
3355
3356 @iftex
3357 @secno=3
3358 @end iftex
3359
3360 @node Numerical Functions, Random Numbers, Predicates on Numbers, Numbers
3361 @section Numerical Functions
3362
3363 @noindent
3364 These functions perform various arithmetic operations on numbers.
3365
3366 @defun gcd &rest integers
3367 This function returns the Greatest Common Divisor of the arguments.
3368 For one argument, it returns the absolute value of that argument.
3369 For zero arguments, it returns zero.
3370 @end defun
3371
3372 @defun lcm &rest integers
3373 This function returns the Least Common Multiple of the arguments.
3374 For one argument, it returns the absolute value of that argument.
3375 For zero arguments, it returns one.
3376 @end defun
3377
3378 @defun isqrt integer
3379 This function computes the ``integer square root'' of its integer
3380 argument, i.e., the greatest integer less than or equal to the true
3381 square root of the argument.
3382 @end defun
3383
3384 @defun floor* number &optional divisor
3385 This function implements the Common Lisp @code{floor} function.
3386 It is called @code{floor*} to avoid name conflicts with the
3387 simpler @code{floor} function built-in to Emacs.
3388
3389 With one argument, @code{floor*} returns a list of two numbers:
3390 The argument rounded down (toward minus infinity) to an integer,
3391 and the ``remainder'' which would have to be added back to the
3392 first return value to yield the argument again. If the argument
3393 is an integer @var{x}, the result is always the list @code{(@var{x} 0)}.
3394 If the argument is a floating-point number, the first
3395 result is a Lisp integer and the second is a Lisp float between
3396 0 (inclusive) and 1 (exclusive).
3397
3398 With two arguments, @code{floor*} divides @var{number} by
3399 @var{divisor}, and returns the floor of the quotient and the
3400 corresponding remainder as a list of two numbers. If
3401 @code{(floor* @var{x} @var{y})} returns @code{(@var{q} @var{r})},
3402 then @code{@var{q}*@var{y} + @var{r} = @var{x}}, with @var{r}
3403 between 0 (inclusive) and @var{r} (exclusive). Also, note
3404 that @code{(floor* @var{x})} is exactly equivalent to
3405 @code{(floor* @var{x} 1)}.
3406
3407 This function is entirely compatible with Common Lisp's @code{floor}
3408 function, except that it returns the two results in a list since
3409 Emacs Lisp does not support multiple-valued functions.
3410 @end defun
3411
3412 @defun ceiling* number &optional divisor
3413 This function implements the Common Lisp @code{ceiling} function,
3414 which is analogous to @code{floor} except that it rounds the
3415 argument or quotient of the arguments up toward plus infinity.
3416 The remainder will be between 0 and minus @var{r}.
3417 @end defun
3418
3419 @defun truncate* number &optional divisor
3420 This function implements the Common Lisp @code{truncate} function,
3421 which is analogous to @code{floor} except that it rounds the
3422 argument or quotient of the arguments toward zero. Thus it is
3423 equivalent to @code{floor*} if the argument or quotient is
3424 positive, or to @code{ceiling*} otherwise. The remainder has
3425 the same sign as @var{number}.
3426 @end defun
3427
3428 @defun round* number &optional divisor
3429 This function implements the Common Lisp @code{round} function,
3430 which is analogous to @code{floor} except that it rounds the
3431 argument or quotient of the arguments to the nearest integer.
3432 In the case of a tie (the argument or quotient is exactly
3433 halfway between two integers), it rounds to the even integer.
3434 @end defun
3435
3436 @defun mod* number divisor
3437 This function returns the same value as the second return value
3438 of @code{floor}.
3439 @end defun
3440
3441 @defun rem* number divisor
3442 This function returns the same value as the second return value
3443 of @code{truncate}.
3444 @end defun
3445
3446 These definitions are compatible with those in the Quiroz
3447 @file{cl.el} package, except that this package appends @samp{*}
3448 to certain function names to avoid conflicts with existing
3449 Emacs functions, and that the mechanism for returning
3450 multiple values is different.
3451
3452 @iftex
3453 @secno=8
3454 @end iftex
3455
3456 @node Random Numbers, Implementation Parameters, Numerical Functions, Numbers
3457 @section Random Numbers
3458
3459 @noindent
3460 This package also provides an implementation of the Common Lisp
3461 random number generator. It uses its own additive-congruential
3462 algorithm, which is much more likely to give statistically clean
3463 random numbers than the simple generators supplied by many
3464 operating systems.
3465
3466 @defun random* number &optional state
3467 This function returns a random nonnegative number less than
3468 @var{number}, and of the same type (either integer or floating-point).
3469 The @var{state} argument should be a @code{random-state} object
3470 which holds the state of the random number generator. The
3471 function modifies this state object as a side effect. If
3472 @var{state} is omitted, it defaults to the variable
3473 @code{*random-state*}, which contains a pre-initialized
3474 @code{random-state} object.
3475 @end defun
3476
3477 @defvar *random-state*
3478 This variable contains the system ``default'' @code{random-state}
3479 object, used for calls to @code{random*} that do not specify an
3480 alternative state object. Since any number of programs in the
3481 Emacs process may be accessing @code{*random-state*} in interleaved
3482 fashion, the sequence generated from this variable will be
3483 irreproducible for all intents and purposes.
3484 @end defvar
3485
3486 @defun make-random-state &optional state
3487 This function creates or copies a @code{random-state} object.
3488 If @var{state} is omitted or @code{nil}, it returns a new copy of
3489 @code{*random-state*}. This is a copy in the sense that future
3490 sequences of calls to @code{(random* @var{n})} and
3491 @code{(random* @var{n} @var{s})} (where @var{s} is the new
3492 random-state object) will return identical sequences of random
3493 numbers.
3494
3495 If @var{state} is a @code{random-state} object, this function
3496 returns a copy of that object. If @var{state} is @code{t}, this
3497 function returns a new @code{random-state} object seeded from the
3498 date and time. As an extension to Common Lisp, @var{state} may also
3499 be an integer in which case the new object is seeded from that
3500 integer; each different integer seed will result in a completely
3501 different sequence of random numbers.
3502
3503 It is valid to print a @code{random-state} object to a buffer or
3504 file and later read it back with @code{read}. If a program wishes
3505 to use a sequence of pseudo-random numbers which can be reproduced
3506 later for debugging, it can call @code{(make-random-state t)} to
3507 get a new sequence, then print this sequence to a file. When the
3508 program is later rerun, it can read the original run's random-state
3509 from the file.
3510 @end defun
3511
3512 @defun random-state-p object
3513 This predicate returns @code{t} if @var{object} is a
3514 @code{random-state} object, or @code{nil} otherwise.
3515 @end defun
3516
3517 @node Implementation Parameters, , Random Numbers, Numbers
3518 @section Implementation Parameters
3519
3520 @noindent
3521 This package defines several useful constants having to with numbers.
3522
3523 The following parameters have to do with floating-point numbers.
3524 This package determines their values by exercising the computer's
3525 floating-point arithmetic in various ways. Because this operation
3526 might be slow, the code for initializing them is kept in a separate
3527 function that must be called before the parameters can be used.
3528
3529 @defun cl-float-limits
3530 This function makes sure that the Common Lisp floating-point parameters
3531 like @code{most-positive-float} have been initialized. Until it is
3532 called, these parameters will be @code{nil}. If this version of Emacs
3533 does not support floats, the parameters will remain @code{nil}. If the
3534 parameters have already been initialized, the function returns
3535 immediately.
3536
3537 The algorithm makes assumptions that will be valid for most modern
3538 machines, but will fail if the machine's arithmetic is extremely
3539 unusual, e.g., decimal.
3540 @end defun
3541
3542 Since true Common Lisp supports up to four different floating-point
3543 precisions, it has families of constants like
3544 @code{most-positive-single-float}, @code{most-positive-double-float},
3545 @code{most-positive-long-float}, and so on. Emacs has only one
3546 floating-point precision, so this package omits the precision word
3547 from the constants' names.
3548
3549 @defvar most-positive-float
3550 This constant equals the largest value a Lisp float can hold.
3551 For those systems whose arithmetic supports infinities, this is
3552 the largest @emph{finite} value. For IEEE machines, the value
3553 is approximately @code{1.79e+308}.
3554 @end defvar
3555
3556 @defvar most-negative-float
3557 This constant equals the most-negative value a Lisp float can hold.
3558 (It is assumed to be equal to @code{(- most-positive-float)}.)
3559 @end defvar
3560
3561 @defvar least-positive-float
3562 This constant equals the smallest Lisp float value greater than zero.
3563 For IEEE machines, it is about @code{4.94e-324} if denormals are
3564 supported or @code{2.22e-308} if not.
3565 @end defvar
3566
3567 @defvar least-positive-normalized-float
3568 This constant equals the smallest @emph{normalized} Lisp float greater
3569 than zero, i.e., the smallest value for which IEEE denormalization
3570 will not result in a loss of precision. For IEEE machines, this
3571 value is about @code{2.22e-308}. For machines that do not support
3572 the concept of denormalization and gradual underflow, this constant
3573 will always equal @code{least-positive-float}.
3574 @end defvar
3575
3576 @defvar least-negative-float
3577 This constant is the negative counterpart of @code{least-positive-float}.
3578 @end defvar
3579
3580 @defvar least-negative-normalized-float
3581 This constant is the negative counterpart of
3582 @code{least-positive-normalized-float}.
3583 @end defvar
3584
3585 @defvar float-epsilon
3586 This constant is the smallest positive Lisp float that can be added
3587 to 1.0 to produce a distinct value. Adding a smaller number to 1.0
3588 will yield 1.0 again due to roundoff. For IEEE machines, epsilon
3589 is about @code{2.22e-16}.
3590 @end defvar
3591
3592 @defvar float-negative-epsilon
3593 This is the smallest positive value that can be subtracted from
3594 1.0 to produce a distinct value. For IEEE machines, it is about
3595 @code{1.11e-16}.
3596 @end defvar
3597
3598 @iftex
3599 @chapno=13
3600 @end iftex
3601
3602 @node Sequences, Lists, Numbers, Top
3603 @chapter Sequences
3604
3605 @noindent
3606 Common Lisp defines a number of functions that operate on
3607 @dfn{sequences}, which are either lists, strings, or vectors.
3608 Emacs Lisp includes a few of these, notably @code{elt} and
3609 @code{length}; this package defines most of the rest.
3610
3611 @menu
3612 * Sequence Basics:: Arguments shared by all sequence functions
3613 * Mapping over Sequences:: `mapcar*', `mapcan', `map', `every', etc.
3614 * Sequence Functions:: `subseq', `remove*', `substitute', etc.
3615 * Searching Sequences:: `find', `position', `count', `search', etc.
3616 * Sorting Sequences:: `sort*', `stable-sort', `merge'
3617 @end menu
3618
3619 @node Sequence Basics, Mapping over Sequences, Sequences, Sequences
3620 @section Sequence Basics
3621
3622 @noindent
3623 Many of the sequence functions take keyword arguments; @pxref{Argument
3624 Lists}. All keyword arguments are optional and, if specified,
3625 may appear in any order.
3626
3627 The @code{:key} argument should be passed either @code{nil}, or a
3628 function of one argument. This key function is used as a filter
3629 through which the elements of the sequence are seen; for example,
3630 @code{(find x y :key 'car)} is similar to @code{(assoc* x y)}:
3631 It searches for an element of the list whose @code{car} equals
3632 @code{x}, rather than for an element which equals @code{x} itself.
3633 If @code{:key} is omitted or @code{nil}, the filter is effectively
3634 the identity function.
3635
3636 The @code{:test} and @code{:test-not} arguments should be either
3637 @code{nil}, or functions of two arguments. The test function is
3638 used to compare two sequence elements, or to compare a search value
3639 with sequence elements. (The two values are passed to the test
3640 function in the same order as the original sequence function
3641 arguments from which they are derived, or, if they both come from
3642 the same sequence, in the same order as they appear in that sequence.)
3643 The @code{:test} argument specifies a function which must return
3644 true (non-@code{nil}) to indicate a match; instead, you may use
3645 @code{:test-not} to give a function which returns @emph{false} to
3646 indicate a match. The default test function is @code{eql}.
3647
3648 Many functions which take @var{item} and @code{:test} or @code{:test-not}
3649 arguments also come in @code{-if} and @code{-if-not} varieties,
3650 where a @var{predicate} function is passed instead of @var{item},
3651 and sequence elements match if the predicate returns true on them
3652 (or false in the case of @code{-if-not}). For example:
3653
3654 @example
3655 (remove* 0 seq :test '=) @equiv{} (remove-if 'zerop seq)
3656 @end example
3657
3658 @noindent
3659 to remove all zeros from sequence @code{seq}.
3660
3661 Some operations can work on a subsequence of the argument sequence;
3662 these function take @code{:start} and @code{:end} arguments which
3663 default to zero and the length of the sequence, respectively.
3664 Only elements between @var{start} (inclusive) and @var{end}
3665 (exclusive) are affected by the operation. The @var{end} argument
3666 may be passed @code{nil} to signify the length of the sequence;
3667 otherwise, both @var{start} and @var{end} must be integers, with
3668 @code{0 <= @var{start} <= @var{end} <= (length @var{seq})}.
3669 If the function takes two sequence arguments, the limits are
3670 defined by keywords @code{:start1} and @code{:end1} for the first,
3671 and @code{:start2} and @code{:end2} for the second.
3672
3673 A few functions accept a @code{:from-end} argument, which, if
3674 non-@code{nil}, causes the operation to go from right-to-left
3675 through the sequence instead of left-to-right, and a @code{:count}
3676 argument, which specifies an integer maximum number of elements
3677 to be removed or otherwise processed.
3678
3679 The sequence functions make no guarantees about the order in
3680 which the @code{:test}, @code{:test-not}, and @code{:key} functions
3681 are called on various elements. Therefore, it is a bad idea to depend
3682 on side effects of these functions. For example, @code{:from-end}
3683 may cause the sequence to be scanned actually in reverse, or it may
3684 be scanned forwards but computing a result ``as if'' it were scanned
3685 backwards. (Some functions, like @code{mapcar*} and @code{every},
3686 @emph{do} specify exactly the order in which the function is called
3687 so side effects are perfectly acceptable in those cases.)
3688
3689 Strings may contain ``text properties'' as well
3690 as character data. Except as noted, it is undefined whether or
3691 not text properties are preserved by sequence functions. For
3692 example, @code{(remove* ?A @var{str})} may or may not preserve
3693 the properties of the characters copied from @var{str} into the
3694 result.
3695
3696 @node Mapping over Sequences, Sequence Functions, Sequence Basics, Sequences
3697 @section Mapping over Sequences
3698
3699 @noindent
3700 These functions ``map'' the function you specify over the elements
3701 of lists or arrays. They are all variations on the theme of the
3702 built-in function @code{mapcar}.
3703
3704 @defun mapcar* function seq &rest more-seqs
3705 This function calls @var{function} on successive parallel sets of
3706 elements from its argument sequences. Given a single @var{seq}
3707 argument it is equivalent to @code{mapcar}; given @var{n} sequences,
3708 it calls the function with the first elements of each of the sequences
3709 as the @var{n} arguments to yield the first element of the result
3710 list, then with the second elements, and so on. The mapping stops as
3711 soon as the shortest sequence runs out. The argument sequences may
3712 be any mixture of lists, strings, and vectors; the return sequence
3713 is always a list.
3714
3715 Common Lisp's @code{mapcar} accepts multiple arguments but works
3716 only on lists; Emacs Lisp's @code{mapcar} accepts a single sequence
3717 argument. This package's @code{mapcar*} works as a compatible
3718 superset of both.
3719 @end defun
3720
3721 @defun map result-type function seq &rest more-seqs
3722 This function maps @var{function} over the argument sequences,
3723 just like @code{mapcar*}, but it returns a sequence of type
3724 @var{result-type} rather than a list. @var{result-type} must
3725 be one of the following symbols: @code{vector}, @code{string},
3726 @code{list} (in which case the effect is the same as for
3727 @code{mapcar*}), or @code{nil} (in which case the results are
3728 thrown away and @code{map} returns @code{nil}).
3729 @end defun
3730
3731 @defun maplist function list &rest more-lists
3732 This function calls @var{function} on each of its argument lists,
3733 then on the @code{cdr}s of those lists, and so on, until the
3734 shortest list runs out. The results are returned in the form
3735 of a list. Thus, @code{maplist} is like @code{mapcar*} except
3736 that it passes in the list pointers themselves rather than the
3737 @code{car}s of the advancing pointers.
3738 @end defun
3739
3740 @defun cl-mapc function seq &rest more-seqs
3741 This function is like @code{mapcar*}, except that the values returned
3742 by @var{function} are ignored and thrown away rather than being
3743 collected into a list. The return value of @code{cl-mapc} is @var{seq},
3744 the first sequence. This function is more general than the Emacs
3745 primitive @code{mapc}.
3746 @end defun
3747
3748 @defun mapl function list &rest more-lists
3749 This function is like @code{maplist}, except that it throws away
3750 the values returned by @var{function}.
3751 @end defun
3752
3753 @defun mapcan function seq &rest more-seqs
3754 This function is like @code{mapcar*}, except that it concatenates
3755 the return values (which must be lists) using @code{nconc},
3756 rather than simply collecting them into a list.
3757 @end defun
3758
3759 @defun mapcon function list &rest more-lists
3760 This function is like @code{maplist}, except that it concatenates
3761 the return values using @code{nconc}.
3762 @end defun
3763
3764 @defun some predicate seq &rest more-seqs
3765 This function calls @var{predicate} on each element of @var{seq}
3766 in turn; if @var{predicate} returns a non-@code{nil} value,
3767 @code{some} returns that value, otherwise it returns @code{nil}.
3768 Given several sequence arguments, it steps through the sequences
3769 in parallel until the shortest one runs out, just as in
3770 @code{mapcar*}. You can rely on the left-to-right order in which
3771 the elements are visited, and on the fact that mapping stops
3772 immediately as soon as @var{predicate} returns non-@code{nil}.
3773 @end defun
3774
3775 @defun every predicate seq &rest more-seqs
3776 This function calls @var{predicate} on each element of the sequence(s)
3777 in turn; it returns @code{nil} as soon as @var{predicate} returns
3778 @code{nil} for any element, or @code{t} if the predicate was true
3779 for all elements.
3780 @end defun
3781
3782 @defun notany predicate seq &rest more-seqs
3783 This function calls @var{predicate} on each element of the sequence(s)
3784 in turn; it returns @code{nil} as soon as @var{predicate} returns
3785 a non-@code{nil} value for any element, or @code{t} if the predicate
3786 was @code{nil} for all elements.
3787 @end defun
3788
3789 @defun notevery predicate seq &rest more-seqs
3790 This function calls @var{predicate} on each element of the sequence(s)
3791 in turn; it returns a non-@code{nil} value as soon as @var{predicate}
3792 returns @code{nil} for any element, or @code{t} if the predicate was
3793 true for all elements.
3794 @end defun
3795
3796 @defun reduce function seq @t{&key :from-end :start :end :initial-value :key}
3797 This function combines the elements of @var{seq} using an associative
3798 binary operation. Suppose @var{function} is @code{*} and @var{seq} is
3799 the list @code{(2 3 4 5)}. The first two elements of the list are
3800 combined with @code{(* 2 3) = 6}; this is combined with the next
3801 element, @code{(* 6 4) = 24}, and that is combined with the final
3802 element: @code{(* 24 5) = 120}. Note that the @code{*} function happens
3803 to be self-reducing, so that @code{(* 2 3 4 5)} has the same effect as
3804 an explicit call to @code{reduce}.
3805
3806 If @code{:from-end} is true, the reduction is right-associative instead
3807 of left-associative:
3808
3809 @example
3810 (reduce '- '(1 2 3 4))
3811 @equiv{} (- (- (- 1 2) 3) 4) @result{} -8
3812 (reduce '- '(1 2 3 4) :from-end t)
3813 @equiv{} (- 1 (- 2 (- 3 4))) @result{} -2
3814 @end example
3815
3816 If @code{:key} is specified, it is a function of one argument which
3817 is called on each of the sequence elements in turn.
3818
3819 If @code{:initial-value} is specified, it is effectively added to the
3820 front (or rear in the case of @code{:from-end}) of the sequence.
3821 The @code{:key} function is @emph{not} applied to the initial value.
3822
3823 If the sequence, including the initial value, has exactly one element
3824 then that element is returned without ever calling @var{function}.
3825 If the sequence is empty (and there is no initial value), then
3826 @var{function} is called with no arguments to obtain the return value.
3827 @end defun
3828
3829 All of these mapping operations can be expressed conveniently in
3830 terms of the @code{loop} macro. In compiled code, @code{loop} will
3831 be faster since it generates the loop as in-line code with no
3832 function calls.
3833
3834 @node Sequence Functions, Searching Sequences, Mapping over Sequences, Sequences
3835 @section Sequence Functions
3836
3837 @noindent
3838 This section describes a number of Common Lisp functions for
3839 operating on sequences.
3840
3841 @defun subseq sequence start &optional end
3842 This function returns a given subsequence of the argument
3843 @var{sequence}, which may be a list, string, or vector.
3844 The indices @var{start} and @var{end} must be in range, and
3845 @var{start} must be no greater than @var{end}. If @var{end}
3846 is omitted, it defaults to the length of the sequence. The
3847 return value is always a copy; it does not share structure
3848 with @var{sequence}.
3849
3850 As an extension to Common Lisp, @var{start} and/or @var{end}
3851 may be negative, in which case they represent a distance back
3852 from the end of the sequence. This is for compatibility with
3853 Emacs' @code{substring} function. Note that @code{subseq} is
3854 the @emph{only} sequence function that allows negative
3855 @var{start} and @var{end}.
3856
3857 You can use @code{setf} on a @code{subseq} form to replace a
3858 specified range of elements with elements from another sequence.
3859 The replacement is done as if by @code{replace}, described below.
3860 @end defun
3861
3862 @defun concatenate result-type &rest seqs
3863 This function concatenates the argument sequences together to
3864 form a result sequence of type @var{result-type}, one of the
3865 symbols @code{vector}, @code{string}, or @code{list}. The
3866 arguments are always copied, even in cases such as
3867 @code{(concatenate 'list '(1 2 3))} where the result is
3868 identical to an argument.
3869 @end defun
3870
3871 @defun fill seq item @t{&key :start :end}
3872 This function fills the elements of the sequence (or the specified
3873 part of the sequence) with the value @var{item}.
3874 @end defun
3875
3876 @defun replace seq1 seq2 @t{&key :start1 :end1 :start2 :end2}
3877 This function copies part of @var{seq2} into part of @var{seq1}.
3878 The sequence @var{seq1} is not stretched or resized; the amount
3879 of data copied is simply the shorter of the source and destination
3880 (sub)sequences. The function returns @var{seq1}.
3881
3882 If @var{seq1} and @var{seq2} are @code{eq}, then the replacement
3883 will work correctly even if the regions indicated by the start
3884 and end arguments overlap. However, if @var{seq1} and @var{seq2}
3885 are lists which share storage but are not @code{eq}, and the
3886 start and end arguments specify overlapping regions, the effect
3887 is undefined.
3888 @end defun
3889
3890 @defun remove* item seq @t{&key :test :test-not :key :count :start :end :from-end}
3891 This returns a copy of @var{seq} with all elements matching
3892 @var{item} removed. The result may share storage with or be
3893 @code{eq} to @var{seq} in some circumstances, but the original
3894 @var{seq} will not be modified. The @code{:test}, @code{:test-not},
3895 and @code{:key} arguments define the matching test that is used;
3896 by default, elements @code{eql} to @var{item} are removed. The
3897 @code{:count} argument specifies the maximum number of matching
3898 elements that can be removed (only the leftmost @var{count} matches
3899 are removed). The @code{:start} and @code{:end} arguments specify
3900 a region in @var{seq} in which elements will be removed; elements
3901 outside that region are not matched or removed. The @code{:from-end}
3902 argument, if true, says that elements should be deleted from the
3903 end of the sequence rather than the beginning (this matters only
3904 if @var{count} was also specified).
3905 @end defun
3906
3907 @defun delete* item seq @t{&key :test :test-not :key :count :start :end :from-end}
3908 This deletes all elements of @var{seq} which match @var{item}.
3909 It is a destructive operation. Since Emacs Lisp does not support
3910 stretchable strings or vectors, this is the same as @code{remove*}
3911 for those sequence types. On lists, @code{remove*} will copy the
3912 list if necessary to preserve the original list, whereas
3913 @code{delete*} will splice out parts of the argument list.
3914 Compare @code{append} and @code{nconc}, which are analogous
3915 non-destructive and destructive list operations in Emacs Lisp.
3916 @end defun
3917
3918 @findex remove-if
3919 @findex remove-if-not
3920 @findex delete-if
3921 @findex delete-if-not
3922 The predicate-oriented functions @code{remove-if}, @code{remove-if-not},
3923 @code{delete-if}, and @code{delete-if-not} are defined similarly.
3924
3925 @defun remove-duplicates seq @t{&key :test :test-not :key :start :end :from-end}
3926 This function returns a copy of @var{seq} with duplicate elements
3927 removed. Specifically, if two elements from the sequence match
3928 according to the @code{:test}, @code{:test-not}, and @code{:key}
3929 arguments, only the rightmost one is retained. If @code{:from-end}
3930 is true, the leftmost one is retained instead. If @code{:start} or
3931 @code{:end} is specified, only elements within that subsequence are
3932 examined or removed.
3933 @end defun
3934
3935 @defun delete-duplicates seq @t{&key :test :test-not :key :start :end :from-end}
3936 This function deletes duplicate elements from @var{seq}. It is
3937 a destructive version of @code{remove-duplicates}.
3938 @end defun
3939
3940 @defun substitute new old seq @t{&key :test :test-not :key :count :start :end :from-end}
3941 This function returns a copy of @var{seq}, with all elements
3942 matching @var{old} replaced with @var{new}. The @code{:count},
3943 @code{:start}, @code{:end}, and @code{:from-end} arguments may be
3944 used to limit the number of substitutions made.
3945 @end defun
3946
3947 @defun nsubstitute new old seq @t{&key :test :test-not :key :count :start :end :from-end}
3948 This is a destructive version of @code{substitute}; it performs
3949 the substitution using @code{setcar} or @code{aset} rather than
3950 by returning a changed copy of the sequence.
3951 @end defun
3952
3953 @findex substitute-if
3954 @findex substitute-if-not
3955 @findex nsubstitute-if
3956 @findex nsubstitute-if-not
3957 The @code{substitute-if}, @code{substitute-if-not}, @code{nsubstitute-if},
3958 and @code{nsubstitute-if-not} functions are defined similarly. For
3959 these, a @var{predicate} is given in place of the @var{old} argument.
3960
3961 @node Searching Sequences, Sorting Sequences, Sequence Functions, Sequences
3962 @section Searching Sequences
3963
3964 @noindent
3965 These functions search for elements or subsequences in a sequence.
3966 (See also @code{member*} and @code{assoc*}; @pxref{Lists}.)
3967
3968 @defun find item seq @t{&key :test :test-not :key :start :end :from-end}
3969 This function searches @var{seq} for an element matching @var{item}.
3970 If it finds a match, it returns the matching element. Otherwise,
3971 it returns @code{nil}. It returns the leftmost match, unless
3972 @code{:from-end} is true, in which case it returns the rightmost
3973 match. The @code{:start} and @code{:end} arguments may be used to
3974 limit the range of elements that are searched.
3975 @end defun
3976
3977 @defun position item seq @t{&key :test :test-not :key :start :end :from-end}
3978 This function is like @code{find}, except that it returns the
3979 integer position in the sequence of the matching item rather than
3980 the item itself. The position is relative to the start of the
3981 sequence as a whole, even if @code{:start} is non-zero. The function
3982 returns @code{nil} if no matching element was found.
3983 @end defun
3984
3985 @defun count item seq @t{&key :test :test-not :key :start :end}
3986 This function returns the number of elements of @var{seq} which
3987 match @var{item}. The result is always a nonnegative integer.
3988 @end defun
3989
3990 @findex find-if
3991 @findex find-if-not
3992 @findex position-if
3993 @findex position-if-not
3994 @findex count-if
3995 @findex count-if-not
3996 The @code{find-if}, @code{find-if-not}, @code{position-if},
3997 @code{position-if-not}, @code{count-if}, and @code{count-if-not}
3998 functions are defined similarly.
3999
4000 @defun mismatch seq1 seq2 @t{&key :test :test-not :key :start1 :end1 :start2 :end2 :from-end}
4001 This function compares the specified parts of @var{seq1} and
4002 @var{seq2}. If they are the same length and the corresponding
4003 elements match (according to @code{:test}, @code{:test-not},
4004 and @code{:key}), the function returns @code{nil}. If there is
4005 a mismatch, the function returns the index (relative to @var{seq1})
4006 of the first mismatching element. This will be the leftmost pair of
4007 elements which do not match, or the position at which the shorter of
4008 the two otherwise-matching sequences runs out.
4009
4010 If @code{:from-end} is true, then the elements are compared from right
4011 to left starting at @code{(1- @var{end1})} and @code{(1- @var{end2})}.
4012 If the sequences differ, then one plus the index of the rightmost
4013 difference (relative to @var{seq1}) is returned.
4014
4015 An interesting example is @code{(mismatch str1 str2 :key 'upcase)},
4016 which compares two strings case-insensitively.
4017 @end defun
4018
4019 @defun search seq1 seq2 @t{&key :test :test-not :key :from-end :start1 :end1 :start2 :end2}
4020 This function searches @var{seq2} for a subsequence that matches
4021 @var{seq1} (or part of it specified by @code{:start1} and
4022 @code{:end1}.) Only matches which fall entirely within the region
4023 defined by @code{:start2} and @code{:end2} will be considered.
4024 The return value is the index of the leftmost element of the
4025 leftmost match, relative to the start of @var{seq2}, or @code{nil}
4026 if no matches were found. If @code{:from-end} is true, the
4027 function finds the @emph{rightmost} matching subsequence.
4028 @end defun
4029
4030 @node Sorting Sequences, , Searching Sequences, Sequences
4031 @section Sorting Sequences
4032
4033 @defun sort* seq predicate @t{&key :key}
4034 This function sorts @var{seq} into increasing order as determined
4035 by using @var{predicate} to compare pairs of elements. @var{predicate}
4036 should return true (non-@code{nil}) if and only if its first argument
4037 is less than (not equal to) its second argument. For example,
4038 @code{<} and @code{string-lessp} are suitable predicate functions
4039 for sorting numbers and strings, respectively; @code{>} would sort
4040 numbers into decreasing rather than increasing order.
4041
4042 This function differs from Emacs' built-in @code{sort} in that it
4043 can operate on any type of sequence, not just lists. Also, it
4044 accepts a @code{:key} argument which is used to preprocess data
4045 fed to the @var{predicate} function. For example,
4046
4047 @example
4048 (setq data (sort* data 'string-lessp :key 'downcase))
4049 @end example
4050
4051 @noindent
4052 sorts @var{data}, a sequence of strings, into increasing alphabetical
4053 order without regard to case. A @code{:key} function of @code{car}
4054 would be useful for sorting association lists. It should only be a
4055 simple accessor though, it's used heavily in the current
4056 implementation.
4057
4058 The @code{sort*} function is destructive; it sorts lists by actually
4059 rearranging the @code{cdr} pointers in suitable fashion.
4060 @end defun
4061
4062 @defun stable-sort seq predicate @t{&key :key}
4063 This function sorts @var{seq} @dfn{stably}, meaning two elements
4064 which are equal in terms of @var{predicate} are guaranteed not to
4065 be rearranged out of their original order by the sort.
4066
4067 In practice, @code{sort*} and @code{stable-sort} are equivalent
4068 in Emacs Lisp because the underlying @code{sort} function is
4069 stable by default. However, this package reserves the right to
4070 use non-stable methods for @code{sort*} in the future.
4071 @end defun
4072
4073 @defun merge type seq1 seq2 predicate @t{&key :key}
4074 This function merges two sequences @var{seq1} and @var{seq2} by
4075 interleaving their elements. The result sequence, of type @var{type}
4076 (in the sense of @code{concatenate}), has length equal to the sum
4077 of the lengths of the two input sequences. The sequences may be
4078 modified destructively. Order of elements within @var{seq1} and
4079 @var{seq2} is preserved in the interleaving; elements of the two
4080 sequences are compared by @var{predicate} (in the sense of
4081 @code{sort}) and the lesser element goes first in the result.
4082 When elements are equal, those from @var{seq1} precede those from
4083 @var{seq2} in the result. Thus, if @var{seq1} and @var{seq2} are
4084 both sorted according to @var{predicate}, then the result will be
4085 a merged sequence which is (stably) sorted according to
4086 @var{predicate}.
4087 @end defun
4088
4089 @node Lists, Structures, Sequences, Top
4090 @chapter Lists
4091
4092 @noindent
4093 The functions described here operate on lists.
4094
4095 @menu
4096 * List Functions:: `caddr', `first', `list*', etc.
4097 * Substitution of Expressions:: `subst', `sublis', etc.
4098 * Lists as Sets:: `member*', `adjoin', `union', etc.
4099 * Association Lists:: `assoc*', `rassoc*', `acons', `pairlis'
4100 @end menu
4101
4102 @node List Functions, Substitution of Expressions, Lists, Lists
4103 @section List Functions
4104
4105 @noindent
4106 This section describes a number of simple operations on lists,
4107 i.e., chains of cons cells.
4108
4109 @defun caddr x
4110 This function is equivalent to @code{(car (cdr (cdr @var{x})))}.
4111 Likewise, this package defines all 28 @code{c@var{xxx}r} functions
4112 where @var{xxx} is up to four @samp{a}s and/or @samp{d}s.
4113 All of these functions are @code{setf}-able, and calls to them
4114 are expanded inline by the byte-compiler for maximum efficiency.
4115 @end defun
4116
4117 @defun first x
4118 This function is a synonym for @code{(car @var{x})}. Likewise,
4119 the functions @code{second}, @code{third}, @dots{}, through
4120 @code{tenth} return the given element of the list @var{x}.
4121 @end defun
4122
4123 @defun rest x
4124 This function is a synonym for @code{(cdr @var{x})}.
4125 @end defun
4126
4127 @defun endp x
4128 Common Lisp defines this function to act like @code{null}, but
4129 signaling an error if @code{x} is neither a @code{nil} nor a
4130 cons cell. This package simply defines @code{endp} as a synonym
4131 for @code{null}.
4132 @end defun
4133
4134 @defun list-length x
4135 This function returns the length of list @var{x}, exactly like
4136 @code{(length @var{x})}, except that if @var{x} is a circular
4137 list (where the cdr-chain forms a loop rather than terminating
4138 with @code{nil}), this function returns @code{nil}. (The regular
4139 @code{length} function would get stuck if given a circular list.)
4140 @end defun
4141
4142 @defun list* arg &rest others
4143 This function constructs a list of its arguments. The final
4144 argument becomes the @code{cdr} of the last cell constructed.
4145 Thus, @code{(list* @var{a} @var{b} @var{c})} is equivalent to
4146 @code{(cons @var{a} (cons @var{b} @var{c}))}, and
4147 @code{(list* @var{a} @var{b} nil)} is equivalent to
4148 @code{(list @var{a} @var{b})}.
4149
4150 (Note that this function really is called @code{list*} in Common
4151 Lisp; it is not a name invented for this package like @code{member*}
4152 or @code{defun*}.)
4153 @end defun
4154
4155 @defun ldiff list sublist
4156 If @var{sublist} is a sublist of @var{list}, i.e., is @code{eq} to
4157 one of the cons cells of @var{list}, then this function returns
4158 a copy of the part of @var{list} up to but not including
4159 @var{sublist}. For example, @code{(ldiff x (cddr x))} returns
4160 the first two elements of the list @code{x}. The result is a
4161 copy; the original @var{list} is not modified. If @var{sublist}
4162 is not a sublist of @var{list}, a copy of the entire @var{list}
4163 is returned.
4164 @end defun
4165
4166 @defun copy-list list
4167 This function returns a copy of the list @var{list}. It copies
4168 dotted lists like @code{(1 2 . 3)} correctly.
4169 @end defun
4170
4171 @defun copy-tree x &optional vecp
4172 This function returns a copy of the tree of cons cells @var{x}.
4173 Unlike @code{copy-sequence} (and its alias @code{copy-list}),
4174 which copies only along the @code{cdr} direction, this function
4175 copies (recursively) along both the @code{car} and the @code{cdr}
4176 directions. If @var{x} is not a cons cell, the function simply
4177 returns @var{x} unchanged. If the optional @var{vecp} argument
4178 is true, this function copies vectors (recursively) as well as
4179 cons cells.
4180 @end defun
4181
4182 @defun tree-equal x y @t{&key :test :test-not :key}
4183 This function compares two trees of cons cells. If @var{x} and
4184 @var{y} are both cons cells, their @code{car}s and @code{cdr}s are
4185 compared recursively. If neither @var{x} nor @var{y} is a cons
4186 cell, they are compared by @code{eql}, or according to the
4187 specified test. The @code{:key} function, if specified, is
4188 applied to the elements of both trees. @xref{Sequences}.
4189 @end defun
4190
4191 @iftex
4192 @secno=3
4193 @end iftex
4194
4195 @node Substitution of Expressions, Lists as Sets, List Functions, Lists
4196 @section Substitution of Expressions
4197
4198 @noindent
4199 These functions substitute elements throughout a tree of cons
4200 cells. (@xref{Sequence Functions}, for the @code{substitute}
4201 function, which works on just the top-level elements of a list.)
4202
4203 @defun subst new old tree @t{&key :test :test-not :key}
4204 This function substitutes occurrences of @var{old} with @var{new}
4205 in @var{tree}, a tree of cons cells. It returns a substituted
4206 tree, which will be a copy except that it may share storage with
4207 the argument @var{tree} in parts where no substitutions occurred.
4208 The original @var{tree} is not modified. This function recurses
4209 on, and compares against @var{old}, both @code{car}s and @code{cdr}s
4210 of the component cons cells. If @var{old} is itself a cons cell,
4211 then matching cells in the tree are substituted as usual without
4212 recursively substituting in that cell. Comparisons with @var{old}
4213 are done according to the specified test (@code{eql} by default).
4214 The @code{:key} function is applied to the elements of the tree
4215 but not to @var{old}.
4216 @end defun
4217
4218 @defun nsubst new old tree @t{&key :test :test-not :key}
4219 This function is like @code{subst}, except that it works by
4220 destructive modification (by @code{setcar} or @code{setcdr})
4221 rather than copying.
4222 @end defun
4223
4224 @findex subst-if
4225 @findex subst-if-not
4226 @findex nsubst-if
4227 @findex nsubst-if-not
4228 The @code{subst-if}, @code{subst-if-not}, @code{nsubst-if}, and
4229 @code{nsubst-if-not} functions are defined similarly.
4230
4231 @defun sublis alist tree @t{&key :test :test-not :key}
4232 This function is like @code{subst}, except that it takes an
4233 association list @var{alist} of @var{old}-@var{new} pairs.
4234 Each element of the tree (after applying the @code{:key}
4235 function, if any), is compared with the @code{car}s of
4236 @var{alist}; if it matches, it is replaced by the corresponding
4237 @code{cdr}.
4238 @end defun
4239
4240 @defun nsublis alist tree @t{&key :test :test-not :key}
4241 This is a destructive version of @code{sublis}.
4242 @end defun
4243
4244 @node Lists as Sets, Association Lists, Substitution of Expressions, Lists
4245 @section Lists as Sets
4246
4247 @noindent
4248 These functions perform operations on lists which represent sets
4249 of elements.
4250
4251 @defun member* item list @t{&key :test :test-not :key}
4252 This function searches @var{list} for an element matching @var{item}.
4253 If a match is found, it returns the cons cell whose @code{car} was
4254 the matching element. Otherwise, it returns @code{nil}. Elements
4255 are compared by @code{eql} by default; you can use the @code{:test},
4256 @code{:test-not}, and @code{:key} arguments to modify this behavior.
4257 @xref{Sequences}.
4258
4259 Note that this function's name is suffixed by @samp{*} to avoid
4260 the incompatible @code{member} function defined in Emacs.
4261 (That function uses @code{equal} for comparisons; it is equivalent
4262 to @code{(member* @var{item} @var{list} :test 'equal)}.)
4263 @end defun
4264
4265 @findex member-if
4266 @findex member-if-not
4267 The @code{member-if} and @code{member-if-not} functions
4268 analogously search for elements which satisfy a given predicate.
4269
4270 @defun tailp sublist list
4271 This function returns @code{t} if @var{sublist} is a sublist of
4272 @var{list}, i.e., if @var{sublist} is @code{eql} to @var{list} or to
4273 any of its @code{cdr}s.
4274 @end defun
4275
4276 @defun adjoin item list @t{&key :test :test-not :key}
4277 This function conses @var{item} onto the front of @var{list},
4278 like @code{(cons @var{item} @var{list})}, but only if @var{item}
4279 is not already present on the list (as determined by @code{member*}).
4280 If a @code{:key} argument is specified, it is applied to
4281 @var{item} as well as to the elements of @var{list} during
4282 the search, on the reasoning that @var{item} is ``about'' to
4283 become part of the list.
4284 @end defun
4285
4286 @defun union list1 list2 @t{&key :test :test-not :key}
4287 This function combines two lists which represent sets of items,
4288 returning a list that represents the union of those two sets.
4289 The result list will contain all items which appear in @var{list1}
4290 or @var{list2}, and no others. If an item appears in both
4291 @var{list1} and @var{list2} it will be copied only once. If
4292 an item is duplicated in @var{list1} or @var{list2}, it is
4293 undefined whether or not that duplication will survive in the
4294 result list. The order of elements in the result list is also
4295 undefined.
4296 @end defun
4297
4298 @defun nunion list1 list2 @t{&key :test :test-not :key}
4299 This is a destructive version of @code{union}; rather than copying,
4300 it tries to reuse the storage of the argument lists if possible.
4301 @end defun
4302
4303 @defun intersection list1 list2 @t{&key :test :test-not :key}
4304 This function computes the intersection of the sets represented
4305 by @var{list1} and @var{list2}. It returns the list of items
4306 which appear in both @var{list1} and @var{list2}.
4307 @end defun
4308
4309 @defun nintersection list1 list2 @t{&key :test :test-not :key}
4310 This is a destructive version of @code{intersection}. It
4311 tries to reuse storage of @var{list1} rather than copying.
4312 It does @emph{not} reuse the storage of @var{list2}.
4313 @end defun
4314
4315 @defun set-difference list1 list2 @t{&key :test :test-not :key}
4316 This function computes the ``set difference'' of @var{list1}
4317 and @var{list2}, i.e., the set of elements that appear in
4318 @var{list1} but @emph{not} in @var{list2}.
4319 @end defun
4320
4321 @defun nset-difference list1 list2 @t{&key :test :test-not :key}
4322 This is a destructive @code{set-difference}, which will try
4323 to reuse @var{list1} if possible.
4324 @end defun
4325
4326 @defun set-exclusive-or list1 list2 @t{&key :test :test-not :key}
4327 This function computes the ``set exclusive or'' of @var{list1}
4328 and @var{list2}, i.e., the set of elements that appear in
4329 exactly one of @var{list1} and @var{list2}.
4330 @end defun
4331
4332 @defun nset-exclusive-or list1 list2 @t{&key :test :test-not :key}
4333 This is a destructive @code{set-exclusive-or}, which will try
4334 to reuse @var{list1} and @var{list2} if possible.
4335 @end defun
4336
4337 @defun subsetp list1 list2 @t{&key :test :test-not :key}
4338 This function checks whether @var{list1} represents a subset
4339 of @var{list2}, i.e., whether every element of @var{list1}
4340 also appears in @var{list2}.
4341 @end defun
4342
4343 @node Association Lists, , Lists as Sets, Lists
4344 @section Association Lists
4345
4346 @noindent
4347 An @dfn{association list} is a list representing a mapping from
4348 one set of values to another; any list whose elements are cons
4349 cells is an association list.
4350
4351 @defun assoc* item a-list @t{&key :test :test-not :key}
4352 This function searches the association list @var{a-list} for an
4353 element whose @code{car} matches (in the sense of @code{:test},
4354 @code{:test-not}, and @code{:key}, or by comparison with @code{eql})
4355 a given @var{item}. It returns the matching element, if any,
4356 otherwise @code{nil}. It ignores elements of @var{a-list} which
4357 are not cons cells. (This corresponds to the behavior of
4358 @code{assq} and @code{assoc} in Emacs Lisp; Common Lisp's
4359 @code{assoc} ignores @code{nil}s but considers any other non-cons
4360 elements of @var{a-list} to be an error.)
4361 @end defun
4362
4363 @defun rassoc* item a-list @t{&key :test :test-not :key}
4364 This function searches for an element whose @code{cdr} matches
4365 @var{item}. If @var{a-list} represents a mapping, this applies
4366 the inverse of the mapping to @var{item}.
4367 @end defun
4368
4369 @findex assoc-if
4370 @findex assoc-if-not
4371 @findex rassoc-if
4372 @findex rassoc-if-not
4373 The @code{assoc-if}, @code{assoc-if-not}, @code{rassoc-if},
4374 and @code{rassoc-if-not} functions are defined similarly.
4375
4376 Two simple functions for constructing association lists are:
4377
4378 @defun acons key value alist
4379 This is equivalent to @code{(cons (cons @var{key} @var{value}) @var{alist})}.
4380 @end defun
4381
4382 @defun pairlis keys values &optional alist
4383 This is equivalent to @code{(nconc (mapcar* 'cons @var{keys} @var{values})
4384 @var{alist})}.
4385 @end defun
4386
4387 @iftex
4388 @chapno=18
4389 @end iftex
4390
4391 @node Structures, Assertions, Lists, Top
4392 @chapter Structures
4393
4394 @noindent
4395 The Common Lisp @dfn{structure} mechanism provides a general way
4396 to define data types similar to C's @code{struct} types. A
4397 structure is a Lisp object containing some number of @dfn{slots},
4398 each of which can hold any Lisp data object. Functions are
4399 provided for accessing and setting the slots, creating or copying
4400 structure objects, and recognizing objects of a particular structure
4401 type.
4402
4403 In true Common Lisp, each structure type is a new type distinct
4404 from all existing Lisp types. Since the underlying Emacs Lisp
4405 system provides no way to create new distinct types, this package
4406 implements structures as vectors (or lists upon request) with a
4407 special ``tag'' symbol to identify them.
4408
4409 @defspec defstruct name slots@dots{}
4410 The @code{defstruct} form defines a new structure type called
4411 @var{name}, with the specified @var{slots}. (The @var{slots}
4412 may begin with a string which documents the structure type.)
4413 In the simplest case, @var{name} and each of the @var{slots}
4414 are symbols. For example,
4415
4416 @example
4417 (defstruct person name age sex)
4418 @end example
4419
4420 @noindent
4421 defines a struct type called @code{person} which contains three
4422 slots. Given a @code{person} object @var{p}, you can access those
4423 slots by calling @code{(person-name @var{p})}, @code{(person-age @var{p})},
4424 and @code{(person-sex @var{p})}. You can also change these slots by
4425 using @code{setf} on any of these place forms:
4426
4427 @example
4428 (incf (person-age birthday-boy))
4429 @end example
4430
4431 You can create a new @code{person} by calling @code{make-person},
4432 which takes keyword arguments @code{:name}, @code{:age}, and
4433 @code{:sex} to specify the initial values of these slots in the
4434 new object. (Omitting any of these arguments leaves the corresponding
4435 slot ``undefined,'' according to the Common Lisp standard; in Emacs
4436 Lisp, such uninitialized slots are filled with @code{nil}.)
4437
4438 Given a @code{person}, @code{(copy-person @var{p})} makes a new
4439 object of the same type whose slots are @code{eq} to those of @var{p}.
4440
4441 Given any Lisp object @var{x}, @code{(person-p @var{x})} returns
4442 true if @var{x} looks like a @code{person}, false otherwise. (Again,
4443 in Common Lisp this predicate would be exact; in Emacs Lisp the
4444 best it can do is verify that @var{x} is a vector of the correct
4445 length which starts with the correct tag symbol.)
4446
4447 Accessors like @code{person-name} normally check their arguments
4448 (effectively using @code{person-p}) and signal an error if the
4449 argument is the wrong type. This check is affected by
4450 @code{(optimize (safety @dots{}))} declarations. Safety level 1,
4451 the default, uses a somewhat optimized check that will detect all
4452 incorrect arguments, but may use an uninformative error message
4453 (e.g., ``expected a vector'' instead of ``expected a @code{person}'').
4454 Safety level 0 omits all checks except as provided by the underlying
4455 @code{aref} call; safety levels 2 and 3 do rigorous checking that will
4456 always print a descriptive error message for incorrect inputs.
4457 @xref{Declarations}.
4458
4459 @example
4460 (setq dave (make-person :name "Dave" :sex 'male))
4461 @result{} [cl-struct-person "Dave" nil male]
4462 (setq other (copy-person dave))
4463 @result{} [cl-struct-person "Dave" nil male]
4464 (eq dave other)
4465 @result{} nil
4466 (eq (person-name dave) (person-name other))
4467 @result{} t
4468 (person-p dave)
4469 @result{} t
4470 (person-p [1 2 3 4])
4471 @result{} nil
4472 (person-p "Bogus")
4473 @result{} nil
4474 (person-p '[cl-struct-person counterfeit person object])
4475 @result{} t
4476 @end example
4477
4478 In general, @var{name} is either a name symbol or a list of a name
4479 symbol followed by any number of @dfn{struct options}; each @var{slot}
4480 is either a slot symbol or a list of the form @samp{(@var{slot-name}
4481 @var{default-value} @var{slot-options}@dots{})}. The @var{default-value}
4482 is a Lisp form which is evaluated any time an instance of the
4483 structure type is created without specifying that slot's value.
4484
4485 Common Lisp defines several slot options, but the only one
4486 implemented in this package is @code{:read-only}. A non-@code{nil}
4487 value for this option means the slot should not be @code{setf}-able;
4488 the slot's value is determined when the object is created and does
4489 not change afterward.
4490
4491 @example
4492 (defstruct person
4493 (name nil :read-only t)
4494 age
4495 (sex 'unknown))
4496 @end example
4497
4498 Any slot options other than @code{:read-only} are ignored.
4499
4500 For obscure historical reasons, structure options take a different
4501 form than slot options. A structure option is either a keyword
4502 symbol, or a list beginning with a keyword symbol possibly followed
4503 by arguments. (By contrast, slot options are key-value pairs not
4504 enclosed in lists.)
4505
4506 @example
4507 (defstruct (person (:constructor create-person)
4508 (:type list)
4509 :named)
4510 name age sex)
4511 @end example
4512
4513 The following structure options are recognized.
4514
4515 @table @code
4516 @iftex
4517 @itemmax=0 in
4518 @advance@leftskip-.5@tableindent
4519 @end iftex
4520 @item :conc-name
4521 The argument is a symbol whose print name is used as the prefix for
4522 the names of slot accessor functions. The default is the name of
4523 the struct type followed by a hyphen. The option @code{(:conc-name p-)}
4524 would change this prefix to @code{p-}. Specifying @code{nil} as an
4525 argument means no prefix, so that the slot names themselves are used
4526 to name the accessor functions.
4527
4528 @item :constructor
4529 In the simple case, this option takes one argument which is an
4530 alternate name to use for the constructor function. The default
4531 is @code{make-@var{name}}, e.g., @code{make-person}. The above
4532 example changes this to @code{create-person}. Specifying @code{nil}
4533 as an argument means that no standard constructor should be
4534 generated at all.
4535
4536 In the full form of this option, the constructor name is followed
4537 by an arbitrary argument list. @xref{Program Structure}, for a
4538 description of the format of Common Lisp argument lists. All
4539 options, such as @code{&rest} and @code{&key}, are supported.
4540 The argument names should match the slot names; each slot is
4541 initialized from the corresponding argument. Slots whose names
4542 do not appear in the argument list are initialized based on the
4543 @var{default-value} in their slot descriptor. Also, @code{&optional}
4544 and @code{&key} arguments which don't specify defaults take their
4545 defaults from the slot descriptor. It is valid to include arguments
4546 which don't correspond to slot names; these are useful if they are
4547 referred to in the defaults for optional, keyword, or @code{&aux}
4548 arguments which @emph{do} correspond to slots.
4549
4550 You can specify any number of full-format @code{:constructor}
4551 options on a structure. The default constructor is still generated
4552 as well unless you disable it with a simple-format @code{:constructor}
4553 option.
4554
4555 @example
4556 (defstruct
4557 (person
4558 (:constructor nil) ; no default constructor
4559 (:constructor new-person (name sex &optional (age 0)))
4560 (:constructor new-hound (&key (name "Rover")
4561 (dog-years 0)
4562 &aux (age (* 7 dog-years))
4563 (sex 'canine))))
4564 name age sex)
4565 @end example
4566
4567 The first constructor here takes its arguments positionally rather
4568 than by keyword. (In official Common Lisp terminology, constructors
4569 that work By Order of Arguments instead of by keyword are called
4570 ``BOA constructors.'' No, I'm not making this up.) For example,
4571 @code{(new-person "Jane" 'female)} generates a person whose slots
4572 are @code{"Jane"}, 0, and @code{female}, respectively.
4573
4574 The second constructor takes two keyword arguments, @code{:name},
4575 which initializes the @code{name} slot and defaults to @code{"Rover"},
4576 and @code{:dog-years}, which does not itself correspond to a slot
4577 but which is used to initialize the @code{age} slot. The @code{sex}
4578 slot is forced to the symbol @code{canine} with no syntax for
4579 overriding it.
4580
4581 @item :copier
4582 The argument is an alternate name for the copier function for
4583 this type. The default is @code{copy-@var{name}}. @code{nil}
4584 means not to generate a copier function. (In this implementation,
4585 all copier functions are simply synonyms for @code{copy-sequence}.)
4586
4587 @item :predicate
4588 The argument is an alternate name for the predicate which recognizes
4589 objects of this type. The default is @code{@var{name}-p}. @code{nil}
4590 means not to generate a predicate function. (If the @code{:type}
4591 option is used without the @code{:named} option, no predicate is
4592 ever generated.)
4593
4594 In true Common Lisp, @code{typep} is always able to recognize a
4595 structure object even if @code{:predicate} was used. In this
4596 package, @code{typep} simply looks for a function called
4597 @code{@var{typename}-p}, so it will work for structure types
4598 only if they used the default predicate name.
4599
4600 @item :include
4601 This option implements a very limited form of C++-style inheritance.
4602 The argument is the name of another structure type previously
4603 created with @code{defstruct}. The effect is to cause the new
4604 structure type to inherit all of the included structure's slots
4605 (plus, of course, any new slots described by this struct's slot
4606 descriptors). The new structure is considered a ``specialization''
4607 of the included one. In fact, the predicate and slot accessors
4608 for the included type will also accept objects of the new type.
4609
4610 If there are extra arguments to the @code{:include} option after
4611 the included-structure name, these options are treated as replacement
4612 slot descriptors for slots in the included structure, possibly with
4613 modified default values. Borrowing an example from Steele:
4614
4615 @example
4616 (defstruct person name (age 0) sex)
4617 @result{} person
4618 (defstruct (astronaut (:include person (age 45)))
4619 helmet-size
4620 (favorite-beverage 'tang))
4621 @result{} astronaut
4622
4623 (setq joe (make-person :name "Joe"))
4624 @result{} [cl-struct-person "Joe" 0 nil]
4625 (setq buzz (make-astronaut :name "Buzz"))
4626 @result{} [cl-struct-astronaut "Buzz" 45 nil nil tang]
4627
4628 (list (person-p joe) (person-p buzz))
4629 @result{} (t t)
4630 (list (astronaut-p joe) (astronaut-p buzz))
4631 @result{} (nil t)
4632
4633 (person-name buzz)
4634 @result{} "Buzz"
4635 (astronaut-name joe)
4636 @result{} error: "astronaut-name accessing a non-astronaut"
4637 @end example
4638
4639 Thus, if @code{astronaut} is a specialization of @code{person},
4640 then every @code{astronaut} is also a @code{person} (but not the
4641 other way around). Every @code{astronaut} includes all the slots
4642 of a @code{person}, plus extra slots that are specific to
4643 astronauts. Operations that work on people (like @code{person-name})
4644 work on astronauts just like other people.
4645
4646 @item :print-function
4647 In full Common Lisp, this option allows you to specify a function
4648 which is called to print an instance of the structure type. The
4649 Emacs Lisp system offers no hooks into the Lisp printer which would
4650 allow for such a feature, so this package simply ignores
4651 @code{:print-function}.
4652
4653 @item :type
4654 The argument should be one of the symbols @code{vector} or @code{list}.
4655 This tells which underlying Lisp data type should be used to implement
4656 the new structure type. Vectors are used by default, but
4657 @code{(:type list)} will cause structure objects to be stored as
4658 lists instead.
4659
4660 The vector representation for structure objects has the advantage
4661 that all structure slots can be accessed quickly, although creating
4662 vectors is a bit slower in Emacs Lisp. Lists are easier to create,
4663 but take a relatively long time accessing the later slots.
4664
4665 @item :named
4666 This option, which takes no arguments, causes a characteristic ``tag''
4667 symbol to be stored at the front of the structure object. Using
4668 @code{:type} without also using @code{:named} will result in a
4669 structure type stored as plain vectors or lists with no identifying
4670 features.
4671
4672 The default, if you don't specify @code{:type} explicitly, is to
4673 use named vectors. Therefore, @code{:named} is only useful in
4674 conjunction with @code{:type}.
4675
4676 @example
4677 (defstruct (person1) name age sex)
4678 (defstruct (person2 (:type list) :named) name age sex)
4679 (defstruct (person3 (:type list)) name age sex)
4680
4681 (setq p1 (make-person1))
4682 @result{} [cl-struct-person1 nil nil nil]
4683 (setq p2 (make-person2))
4684 @result{} (person2 nil nil nil)
4685 (setq p3 (make-person3))
4686 @result{} (nil nil nil)
4687
4688 (person1-p p1)
4689 @result{} t
4690 (person2-p p2)
4691 @result{} t
4692 (person3-p p3)
4693 @result{} error: function person3-p undefined
4694 @end example
4695
4696 Since unnamed structures don't have tags, @code{defstruct} is not
4697 able to make a useful predicate for recognizing them. Also,
4698 accessors like @code{person3-name} will be generated but they
4699 will not be able to do any type checking. The @code{person3-name}
4700 function, for example, will simply be a synonym for @code{car} in
4701 this case. By contrast, @code{person2-name} is able to verify
4702 that its argument is indeed a @code{person2} object before
4703 proceeding.
4704
4705 @item :initial-offset
4706 The argument must be a nonnegative integer. It specifies a
4707 number of slots to be left ``empty'' at the front of the
4708 structure. If the structure is named, the tag appears at the
4709 specified position in the list or vector; otherwise, the first
4710 slot appears at that position. Earlier positions are filled
4711 with @code{nil} by the constructors and ignored otherwise. If
4712 the type @code{:include}s another type, then @code{:initial-offset}
4713 specifies a number of slots to be skipped between the last slot
4714 of the included type and the first new slot.
4715 @end table
4716 @end defspec
4717
4718 Except as noted, the @code{defstruct} facility of this package is
4719 entirely compatible with that of Common Lisp.
4720
4721 @iftex
4722 @chapno=23
4723 @end iftex
4724
4725 @node Assertions, Efficiency Concerns, Structures, Top
4726 @chapter Assertions and Errors
4727
4728 @noindent
4729 This section describes two macros that test @dfn{assertions}, i.e.,
4730 conditions which must be true if the program is operating correctly.
4731 Assertions never add to the behavior of a Lisp program; they simply
4732 make ``sanity checks'' to make sure everything is as it should be.
4733
4734 If the optimization property @code{speed} has been set to 3, and
4735 @code{safety} is less than 3, then the byte-compiler will optimize
4736 away the following assertions. Because assertions might be optimized
4737 away, it is a bad idea for them to include side-effects.
4738
4739 @defspec assert test-form [show-args string args@dots{}]
4740 This form verifies that @var{test-form} is true (i.e., evaluates to
4741 a non-@code{nil} value). If so, it returns @code{nil}. If the test
4742 is not satisfied, @code{assert} signals an error.
4743
4744 A default error message will be supplied which includes @var{test-form}.
4745 You can specify a different error message by including a @var{string}
4746 argument plus optional extra arguments. Those arguments are simply
4747 passed to @code{error} to signal the error.
4748
4749 If the optional second argument @var{show-args} is @code{t} instead
4750 of @code{nil}, then the error message (with or without @var{string})
4751 will also include all non-constant arguments of the top-level
4752 @var{form}. For example:
4753
4754 @example
4755 (assert (> x 10) t "x is too small: %d")
4756 @end example
4757
4758 This usage of @var{show-args} is an extension to Common Lisp. In
4759 true Common Lisp, the second argument gives a list of @var{places}
4760 which can be @code{setf}'d by the user before continuing from the
4761 error. Since Emacs Lisp does not support continuable errors, it
4762 makes no sense to specify @var{places}.
4763 @end defspec
4764
4765 @defspec check-type form type [string]
4766 This form verifies that @var{form} evaluates to a value of type
4767 @var{type}. If so, it returns @code{nil}. If not, @code{check-type}
4768 signals a @code{wrong-type-argument} error. The default error message
4769 lists the erroneous value along with @var{type} and @var{form}
4770 themselves. If @var{string} is specified, it is included in the
4771 error message in place of @var{type}. For example:
4772
4773 @example
4774 (check-type x (integer 1 *) "a positive integer")
4775 @end example
4776
4777 @xref{Type Predicates}, for a description of the type specifiers
4778 that may be used for @var{type}.
4779
4780 Note that in Common Lisp, the first argument to @code{check-type}
4781 must be a @var{place} suitable for use by @code{setf}, because
4782 @code{check-type} signals a continuable error that allows the
4783 user to modify @var{place}.
4784 @end defspec
4785
4786 The following error-related macro is also defined:
4787
4788 @defspec ignore-errors forms@dots{}
4789 This executes @var{forms} exactly like a @code{progn}, except that
4790 errors are ignored during the @var{forms}. More precisely, if
4791 an error is signaled then @code{ignore-errors} immediately
4792 aborts execution of the @var{forms} and returns @code{nil}.
4793 If the @var{forms} complete successfully, @code{ignore-errors}
4794 returns the result of the last @var{form}.
4795 @end defspec
4796
4797 @node Efficiency Concerns, Common Lisp Compatibility, Assertions, Top
4798 @appendix Efficiency Concerns
4799
4800 @appendixsec Macros
4801
4802 @noindent
4803 Many of the advanced features of this package, such as @code{defun*},
4804 @code{loop}, and @code{setf}, are implemented as Lisp macros. In
4805 byte-compiled code, these complex notations will be expanded into
4806 equivalent Lisp code which is simple and efficient. For example,
4807 the forms
4808
4809 @example
4810 (incf i n)
4811 (push x (car p))
4812 @end example
4813
4814 @noindent
4815 are expanded at compile-time to the Lisp forms
4816
4817 @example
4818 (setq i (+ i n))
4819 (setcar p (cons x (car p)))
4820 @end example
4821
4822 @noindent
4823 which are the most efficient ways of doing these respective operations
4824 in Lisp. Thus, there is no performance penalty for using the more
4825 readable @code{incf} and @code{push} forms in your compiled code.
4826
4827 @emph{Interpreted} code, on the other hand, must expand these macros
4828 every time they are executed. For this reason it is strongly
4829 recommended that code making heavy use of macros be compiled.
4830 (The features labeled ``Special Form'' instead of ``Function'' in
4831 this manual are macros.) A loop using @code{incf} a hundred times
4832 will execute considerably faster if compiled, and will also
4833 garbage-collect less because the macro expansion will not have
4834 to be generated, used, and thrown away a hundred times.
4835
4836 You can find out how a macro expands by using the
4837 @code{cl-prettyexpand} function.
4838
4839 @defun cl-prettyexpand form &optional full
4840 This function takes a single Lisp form as an argument and inserts
4841 a nicely formatted copy of it in the current buffer (which must be
4842 in Lisp mode so that indentation works properly). It also expands
4843 all Lisp macros which appear in the form. The easiest way to use
4844 this function is to go to the @code{*scratch*} buffer and type, say,
4845
4846 @example
4847 (cl-prettyexpand '(loop for x below 10 collect x))
4848 @end example
4849
4850 @noindent
4851 and type @kbd{C-x C-e} immediately after the closing parenthesis;
4852 the expansion
4853
4854 @example
4855 (block nil
4856 (let* ((x 0)
4857 (G1004 nil))
4858 (while (< x 10)
4859 (setq G1004 (cons x G1004))
4860 (setq x (+ x 1)))
4861 (nreverse G1004)))
4862 @end example
4863
4864 @noindent
4865 will be inserted into the buffer. (The @code{block} macro is
4866 expanded differently in the interpreter and compiler, so
4867 @code{cl-prettyexpand} just leaves it alone. The temporary
4868 variable @code{G1004} was created by @code{gensym}.)
4869
4870 If the optional argument @var{full} is true, then @emph{all}
4871 macros are expanded, including @code{block}, @code{eval-when},
4872 and compiler macros. Expansion is done as if @var{form} were
4873 a top-level form in a file being compiled. For example,
4874
4875 @example
4876 (cl-prettyexpand '(pushnew 'x list))
4877 @print{} (setq list (adjoin 'x list))
4878 (cl-prettyexpand '(pushnew 'x list) t)
4879 @print{} (setq list (if (memq 'x list) list (cons 'x list)))
4880 (cl-prettyexpand '(caddr (member* 'a list)) t)
4881 @print{} (car (cdr (cdr (memq 'a list))))
4882 @end example
4883
4884 Note that @code{adjoin}, @code{caddr}, and @code{member*} all
4885 have built-in compiler macros to optimize them in common cases.
4886 @end defun
4887
4888 @ifinfo
4889 @example
4890
4891 @end example
4892 @end ifinfo
4893 @appendixsec Error Checking
4894
4895 @noindent
4896 Common Lisp compliance has in general not been sacrificed for the
4897 sake of efficiency. A few exceptions have been made for cases
4898 where substantial gains were possible at the expense of marginal
4899 incompatibility.
4900
4901 The Common Lisp standard (as embodied in Steele's book) uses the
4902 phrase ``it is an error if'' to indicate a situation which is not
4903 supposed to arise in complying programs; implementations are strongly
4904 encouraged but not required to signal an error in these situations.
4905 This package sometimes omits such error checking in the interest of
4906 compactness and efficiency. For example, @code{do} variable
4907 specifiers are supposed to be lists of one, two, or three forms;
4908 extra forms are ignored by this package rather than signaling a
4909 syntax error. The @code{endp} function is simply a synonym for
4910 @code{null} in this package. Functions taking keyword arguments
4911 will accept an odd number of arguments, treating the trailing
4912 keyword as if it were followed by the value @code{nil}.
4913
4914 Argument lists (as processed by @code{defun*} and friends)
4915 @emph{are} checked rigorously except for the minor point just
4916 mentioned; in particular, keyword arguments are checked for
4917 validity, and @code{&allow-other-keys} and @code{:allow-other-keys}
4918 are fully implemented. Keyword validity checking is slightly
4919 time consuming (though not too bad in byte-compiled code);
4920 you can use @code{&allow-other-keys} to omit this check. Functions
4921 defined in this package such as @code{find} and @code{member*}
4922 do check their keyword arguments for validity.
4923
4924 @ifinfo
4925 @example
4926
4927 @end example
4928 @end ifinfo
4929 @appendixsec Optimizing Compiler
4930
4931 @noindent
4932 Use of the optimizing Emacs compiler is highly recommended; many of the Common
4933 Lisp macros emit
4934 code which can be improved by optimization. In particular,
4935 @code{block}s (whether explicit or implicit in constructs like
4936 @code{defun*} and @code{loop}) carry a fair run-time penalty; the
4937 optimizing compiler removes @code{block}s which are not actually
4938 referenced by @code{return} or @code{return-from} inside the block.
4939
4940 @node Common Lisp Compatibility, Old CL Compatibility, Efficiency Concerns, Top
4941 @appendix Common Lisp Compatibility
4942
4943 @noindent
4944 Following is a list of all known incompatibilities between this
4945 package and Common Lisp as documented in Steele (2nd edition).
4946
4947 Certain function names, such as @code{member}, @code{assoc}, and
4948 @code{floor}, were already taken by (incompatible) Emacs Lisp
4949 functions; this package appends @samp{*} to the names of its
4950 Common Lisp versions of these functions.
4951
4952 The word @code{defun*} is required instead of @code{defun} in order
4953 to use extended Common Lisp argument lists in a function. Likewise,
4954 @code{defmacro*} and @code{function*} are versions of those forms
4955 which understand full-featured argument lists. The @code{&whole}
4956 keyword does not work in @code{defmacro} argument lists (except
4957 inside recursive argument lists).
4958
4959 The @code{equal} predicate does not distinguish
4960 between IEEE floating-point plus and minus zero. The @code{equalp}
4961 predicate has several differences with Common Lisp; @pxref{Predicates}.
4962
4963 The @code{setf} mechanism is entirely compatible, except that
4964 setf-methods return a list of five values rather than five
4965 values directly. Also, the new ``@code{setf} function'' concept
4966 (typified by @code{(defun (setf foo) @dots{})}) is not implemented.
4967
4968 The @code{do-all-symbols} form is the same as @code{do-symbols}
4969 with no @var{obarray} argument. In Common Lisp, this form would
4970 iterate over all symbols in all packages. Since Emacs obarrays
4971 are not a first-class package mechanism, there is no way for
4972 @code{do-all-symbols} to locate any but the default obarray.
4973
4974 The @code{loop} macro is complete except that @code{loop-finish}
4975 and type specifiers are unimplemented.
4976
4977 The multiple-value return facility treats lists as multiple
4978 values, since Emacs Lisp cannot support multiple return values
4979 directly. The macros will be compatible with Common Lisp if
4980 @code{values} or @code{values-list} is always used to return to
4981 a @code{multiple-value-bind} or other multiple-value receiver;
4982 if @code{values} is used without @code{multiple-value-@dots{}}
4983 or vice-versa the effect will be different from Common Lisp.
4984
4985 Many Common Lisp declarations are ignored, and others match
4986 the Common Lisp standard in concept but not in detail. For
4987 example, local @code{special} declarations, which are purely
4988 advisory in Emacs Lisp, do not rigorously obey the scoping rules
4989 set down in Steele's book.
4990
4991 The variable @code{*gensym-counter*} starts out with a pseudo-random
4992 value rather than with zero. This is to cope with the fact that
4993 generated symbols become interned when they are written to and
4994 loaded back from a file.
4995
4996 The @code{defstruct} facility is compatible, except that structures
4997 are of type @code{:type vector :named} by default rather than some
4998 special, distinct type. Also, the @code{:type} slot option is ignored.
4999
5000 The second argument of @code{check-type} is treated differently.
5001
5002 @node Old CL Compatibility, Porting Common Lisp, Common Lisp Compatibility, Top
5003 @appendix Old CL Compatibility
5004
5005 @noindent
5006 Following is a list of all known incompatibilities between this package
5007 and the older Quiroz @file{cl.el} package.
5008
5009 This package's emulation of multiple return values in functions is
5010 incompatible with that of the older package. That package attempted
5011 to come as close as possible to true Common Lisp multiple return
5012 values; unfortunately, it could not be 100% reliable and so was prone
5013 to occasional surprises if used freely. This package uses a simpler
5014 method, namely replacing multiple values with lists of values, which
5015 is more predictable though more noticeably different from Common Lisp.
5016
5017 The @code{defkeyword} form and @code{keywordp} function are not
5018 implemented in this package.
5019
5020 The @code{member}, @code{floor}, @code{ceiling}, @code{truncate},
5021 @code{round}, @code{mod}, and @code{rem} functions are suffixed
5022 by @samp{*} in this package to avoid collision with existing
5023 functions in Emacs. The older package simply
5024 redefined these functions, overwriting the built-in meanings and
5025 causing serious portability problems. (Some more
5026 recent versions of the Quiroz package changed the names to
5027 @code{cl-member}, etc.; this package defines the latter names as
5028 aliases for @code{member*}, etc.)
5029
5030 Certain functions in the old package which were buggy or inconsistent
5031 with the Common Lisp standard are incompatible with the conforming
5032 versions in this package. For example, @code{eql} and @code{member}
5033 were synonyms for @code{eq} and @code{memq} in that package, @code{setf}
5034 failed to preserve correct order of evaluation of its arguments, etc.
5035
5036 Finally, unlike the older package, this package is careful to
5037 prefix all of its internal names with @code{cl-}. Except for a
5038 few functions which are explicitly defined as additional features
5039 (such as @code{floatp-safe} and @code{letf}), this package does not
5040 export any non-@samp{cl-} symbols which are not also part of Common
5041 Lisp.
5042
5043 @ifinfo
5044 @example
5045
5046 @end example
5047 @end ifinfo
5048 @appendixsec The @code{cl-compat} package
5049
5050 @noindent
5051 The @dfn{CL} package includes emulations of some features of the
5052 old @file{cl.el}, in the form of a compatibility package
5053 @code{cl-compat}. This file is obsolete and may be removed in future,
5054 so it should not be used in new code.
5055
5056 The old package defined a number of internal routines without
5057 @code{cl-} prefixes or other annotations. Call to these routines
5058 may have crept into existing Lisp code. @code{cl-compat}
5059 provides emulations of the following internal routines:
5060 @code{pair-with-newsyms}, @code{zip-lists}, @code{unzip-lists},
5061 @code{reassemble-arglists}, @code{duplicate-symbols-p},
5062 @code{safe-idiv}.
5063
5064 Some @code{setf} forms translated into calls to internal
5065 functions that user code might call directly. The functions
5066 @code{setnth}, @code{setnthcdr}, and @code{setelt} fall in
5067 this category; they are defined by @code{cl-compat}, but the
5068 best fix is to change to use @code{setf} properly.
5069
5070 The @code{cl-compat} file defines the keyword functions
5071 @code{keywordp}, @code{keyword-of}, and @code{defkeyword},
5072 which are not defined by the new @dfn{CL} package because the
5073 use of keywords as data is discouraged.
5074
5075 The @code{build-klist} mechanism for parsing keyword arguments
5076 is emulated by @code{cl-compat}; the @code{with-keyword-args}
5077 macro is not, however, and in any case it's best to change to
5078 use the more natural keyword argument processing offered by
5079 @code{defun*}.
5080
5081 Multiple return values are treated differently by the two
5082 Common Lisp packages. The old package's method was more
5083 compatible with true Common Lisp, though it used heuristics
5084 that caused it to report spurious multiple return values in
5085 certain cases. The @code{cl-compat} package defines a set
5086 of multiple-value macros that are compatible with the old
5087 CL package; again, they are heuristic in nature, but they
5088 are guaranteed to work in any case where the old package's
5089 macros worked. To avoid name collision with the ``official''
5090 multiple-value facilities, the ones in @code{cl-compat} have
5091 capitalized names: @code{Values}, @code{Values-list},
5092 @code{Multiple-value-bind}, etc.
5093
5094 The functions @code{cl-floor}, @code{cl-ceiling}, @code{cl-truncate},
5095 and @code{cl-round} are defined by @code{cl-compat} to use the
5096 old-style multiple-value mechanism, just as they did in the old
5097 package. The newer @code{floor*} and friends return their two
5098 results in a list rather than as multiple values. Note that
5099 older versions of the old package used the unadorned names
5100 @code{floor}, @code{ceiling}, etc.; @code{cl-compat} cannot use
5101 these names because they conflict with Emacs built-ins.
5102
5103 @node Porting Common Lisp, GNU Free Documentation License, Old CL Compatibility, Top
5104 @appendix Porting Common Lisp
5105
5106 @noindent
5107 This package is meant to be used as an extension to Emacs Lisp,
5108 not as an Emacs implementation of true Common Lisp. Some of the
5109 remaining differences between Emacs Lisp and Common Lisp make it
5110 difficult to port large Common Lisp applications to Emacs. For
5111 one, some of the features in this package are not fully compliant
5112 with ANSI or Steele; @pxref{Common Lisp Compatibility}. But there
5113 are also quite a few features that this package does not provide
5114 at all. Here are some major omissions that you will want to watch out
5115 for when bringing Common Lisp code into Emacs.
5116
5117 @itemize @bullet
5118 @item
5119 Case-insensitivity. Symbols in Common Lisp are case-insensitive
5120 by default. Some programs refer to a function or variable as
5121 @code{foo} in one place and @code{Foo} or @code{FOO} in another.
5122 Emacs Lisp will treat these as three distinct symbols.
5123
5124 Some Common Lisp code is written entirely in upper case. While Emacs
5125 is happy to let the program's own functions and variables use
5126 this convention, calls to Lisp builtins like @code{if} and
5127 @code{defun} will have to be changed to lower case.
5128
5129 @item
5130 Lexical scoping. In Common Lisp, function arguments and @code{let}
5131 bindings apply only to references physically within their bodies
5132 (or within macro expansions in their bodies). Emacs Lisp, by
5133 contrast, uses @dfn{dynamic scoping} wherein a binding to a
5134 variable is visible even inside functions called from the body.
5135
5136 Variables in Common Lisp can be made dynamically scoped by
5137 declaring them @code{special} or using @code{defvar}. In Emacs
5138 Lisp it is as if all variables were declared @code{special}.
5139
5140 Often you can use code that was written for lexical scoping
5141 even in a dynamically scoped Lisp, but not always. Here is
5142 an example of a Common Lisp code fragment that would fail in
5143 Emacs Lisp:
5144
5145 @example
5146 (defun map-odd-elements (func list)
5147 (loop for x in list
5148 for flag = t then (not flag)
5149 collect (if flag x (funcall func x))))
5150
5151 (defun add-odd-elements (list x)
5152 (map-odd-elements (lambda (a) (+ a x)) list))
5153 @end example
5154
5155 @noindent
5156 In Common Lisp, the two functions' usages of @code{x} are completely
5157 independent. In Emacs Lisp, the binding to @code{x} made by
5158 @code{add-odd-elements} will have been hidden by the binding
5159 in @code{map-odd-elements} by the time the @code{(+ a x)} function
5160 is called.
5161
5162 (This package avoids such problems in its own mapping functions
5163 by using names like @code{cl-x} instead of @code{x} internally;
5164 as long as you don't use the @code{cl-} prefix for your own
5165 variables no collision can occur.)
5166
5167 @xref{Lexical Bindings}, for a description of the @code{lexical-let}
5168 form which establishes a Common Lisp-style lexical binding, and some
5169 examples of how it differs from Emacs' regular @code{let}.
5170
5171 @item
5172 Reader macros. Common Lisp includes a second type of macro that
5173 works at the level of individual characters. For example, Common
5174 Lisp implements the quote notation by a reader macro called @code{'},
5175 whereas Emacs Lisp's parser just treats quote as a special case.
5176 Some Lisp packages use reader macros to create special syntaxes
5177 for themselves, which the Emacs parser is incapable of reading.
5178
5179 @item
5180 Other syntactic features. Common Lisp provides a number of
5181 notations beginning with @code{#} that the Emacs Lisp parser
5182 won't understand. For example, @samp{#| ... |#} is an
5183 alternate comment notation, and @samp{#+lucid (foo)} tells
5184 the parser to ignore the @code{(foo)} except in Lucid Common
5185 Lisp.
5186
5187 @item
5188 Packages. In Common Lisp, symbols are divided into @dfn{packages}.
5189 Symbols that are Lisp built-ins are typically stored in one package;
5190 symbols that are vendor extensions are put in another, and each
5191 application program would have a package for its own symbols.
5192 Certain symbols are ``exported'' by a package and others are
5193 internal; certain packages ``use'' or import the exported symbols
5194 of other packages. To access symbols that would not normally be
5195 visible due to this importing and exporting, Common Lisp provides
5196 a syntax like @code{package:symbol} or @code{package::symbol}.
5197
5198 Emacs Lisp has a single namespace for all interned symbols, and
5199 then uses a naming convention of putting a prefix like @code{cl-}
5200 in front of the name. Some Emacs packages adopt the Common Lisp-like
5201 convention of using @code{cl:} or @code{cl::} as the prefix.
5202 However, the Emacs parser does not understand colons and just
5203 treats them as part of the symbol name. Thus, while @code{mapcar}
5204 and @code{lisp:mapcar} may refer to the same symbol in Common
5205 Lisp, they are totally distinct in Emacs Lisp. Common Lisp
5206 programs which refer to a symbol by the full name sometimes
5207 and the short name other times will not port cleanly to Emacs.
5208
5209 Emacs Lisp does have a concept of ``obarrays,'' which are
5210 package-like collections of symbols, but this feature is not
5211 strong enough to be used as a true package mechanism.
5212
5213 @item
5214 The @code{format} function is quite different between Common
5215 Lisp and Emacs Lisp. It takes an additional ``destination''
5216 argument before the format string. A destination of @code{nil}
5217 means to format to a string as in Emacs Lisp; a destination
5218 of @code{t} means to write to the terminal (similar to
5219 @code{message} in Emacs). Also, format control strings are
5220 utterly different; @code{~} is used instead of @code{%} to
5221 introduce format codes, and the set of available codes is
5222 much richer. There are no notations like @code{\n} for
5223 string literals; instead, @code{format} is used with the
5224 ``newline'' format code, @code{~%}. More advanced formatting
5225 codes provide such features as paragraph filling, case
5226 conversion, and even loops and conditionals.
5227
5228 While it would have been possible to implement most of Common
5229 Lisp @code{format} in this package (under the name @code{format*},
5230 of course), it was not deemed worthwhile. It would have required
5231 a huge amount of code to implement even a decent subset of
5232 @code{format*}, yet the functionality it would provide over
5233 Emacs Lisp's @code{format} would rarely be useful.
5234
5235 @item
5236 Vector constants use square brackets in Emacs Lisp, but
5237 @code{#(a b c)} notation in Common Lisp. To further complicate
5238 matters, Emacs has its own @code{#(} notation for
5239 something entirely different---strings with properties.
5240
5241 @item
5242 Characters are distinct from integers in Common Lisp. The notation
5243 for character constants is also different: @code{#\A} in Common Lisp
5244 where Emacs Lisp uses @code{?A}. Also, @code{string=} and
5245 @code{string-equal} are synonyms in Emacs Lisp, whereas the latter is
5246 case-insensitive in Common Lisp.
5247
5248 @item
5249 Data types. Some Common Lisp data types do not exist in Emacs
5250 Lisp. Rational numbers and complex numbers are not present,
5251 nor are large integers (all integers are ``fixnums''). All
5252 arrays are one-dimensional. There are no readtables or pathnames;
5253 streams are a set of existing data types rather than a new data
5254 type of their own. Hash tables, random-states, structures, and
5255 packages (obarrays) are built from Lisp vectors or lists rather
5256 than being distinct types.
5257
5258 @item
5259 The Common Lisp Object System (CLOS) is not implemented,
5260 nor is the Common Lisp Condition System. However, the EIEIO package
5261 (@pxref{Top, , Introduction, eieio, EIEIO}) does implement some
5262 CLOS functionality.
5263
5264 @item
5265 Common Lisp features that are completely redundant with Emacs
5266 Lisp features of a different name generally have not been
5267 implemented. For example, Common Lisp writes @code{defconstant}
5268 where Emacs Lisp uses @code{defconst}. Similarly, @code{make-list}
5269 takes its arguments in different ways in the two Lisps but does
5270 exactly the same thing, so this package has not bothered to
5271 implement a Common Lisp-style @code{make-list}.
5272
5273 @item
5274 A few more notable Common Lisp features not included in this
5275 package: @code{compiler-let}, @code{tagbody}, @code{prog},
5276 @code{ldb/dpb}, @code{parse-integer}, @code{cerror}.
5277
5278 @item
5279 Recursion. While recursion works in Emacs Lisp just like it
5280 does in Common Lisp, various details of the Emacs Lisp system
5281 and compiler make recursion much less efficient than it is in
5282 most Lisps. Some schools of thought prefer to use recursion
5283 in Lisp over other techniques; they would sum a list of
5284 numbers using something like
5285
5286 @example
5287 (defun sum-list (list)
5288 (if list
5289 (+ (car list) (sum-list (cdr list)))
5290 0))
5291 @end example
5292
5293 @noindent
5294 where a more iteratively-minded programmer might write one of
5295 these forms:
5296
5297 @example
5298 (let ((total 0)) (dolist (x my-list) (incf total x)) total)
5299 (loop for x in my-list sum x)
5300 @end example
5301
5302 While this would be mainly a stylistic choice in most Common Lisps,
5303 in Emacs Lisp you should be aware that the iterative forms are
5304 much faster than recursion. Also, Lisp programmers will want to
5305 note that the current Emacs Lisp compiler does not optimize tail
5306 recursion.
5307 @end itemize
5308
5309 @node GNU Free Documentation License, Function Index, Porting Common Lisp, Top
5310 @appendix GNU Free Documentation License
5311 @include doclicense.texi
5312
5313 @node Function Index, Variable Index, GNU Free Documentation License, Top
5314 @unnumbered Function Index
5315
5316 @printindex fn
5317
5318 @node Variable Index, , Function Index, Top
5319 @unnumbered Variable Index
5320
5321 @printindex vr
5322
5323 @bye
5324
5325 @ignore
5326 arch-tag: b61e7200-3bfa-4a70-a9d3-095e152696f8
5327 @end ignore