]> code.delx.au - gnu-emacs/blob - doc/misc/cl.texi
6bdc494a1a59fc5aaf125d5047d5da2be64094c9
[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, 2011 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 lisp libraries
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-cut-buffer
1021 keymap-parent x-get-cutbuffer
1022 local-key-binding x-get-secondary-selection
1023 mark x-get-selection
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 Emacs frames. The clause @code{screens} is
2498 a synonym for @code{frames}. The frames are visited in
2499 @code{next-frame} order starting from @code{selected-frame}.
2500
2501 @item for @var{var} being the windows [of @var{frame}]
2502 This clause iterates over the windows (in the Emacs sense) of
2503 the current frame, or of the specified @var{frame}. It visits windows
2504 in @code{next-window} order starting from @code{selected-window}
2505 (or @code{frame-selected-window} if you specify @var{frame}).
2506 This clause treats the minibuffer window in the same way as
2507 @code{next-window} does. For greater flexibility, consider using
2508 @code{walk-windows} instead.
2509
2510 @item for @var{var} being the buffers
2511 This clause iterates over all buffers in Emacs. It is equivalent
2512 to @samp{for @var{var} in (buffer-list)}.
2513
2514 @item for @var{var} = @var{expr1} then @var{expr2}
2515 This clause does a general iteration. The first time through
2516 the loop, @var{var} will be bound to @var{expr1}. On the second
2517 and successive iterations it will be set by evaluating @var{expr2}
2518 (which may refer to the old value of @var{var}). For example,
2519 these two loops are effectively the same:
2520
2521 @example
2522 (loop for x on my-list by 'cddr do ...)
2523 (loop for x = my-list then (cddr x) while x do ...)
2524 @end example
2525
2526 Note that this type of @code{for} clause does not imply any sort
2527 of terminating condition; the above example combines it with a
2528 @code{while} clause to tell when to end the loop.
2529
2530 If you omit the @code{then} term, @var{expr1} is used both for
2531 the initial setting and for successive settings:
2532
2533 @example
2534 (loop for x = (random) when (> x 0) return x)
2535 @end example
2536
2537 @noindent
2538 This loop keeps taking random numbers from the @code{(random)}
2539 function until it gets a positive one, which it then returns.
2540 @end table
2541
2542 If you include several @code{for} clauses in a row, they are
2543 treated sequentially (as if by @code{let*} and @code{setq}).
2544 You can instead use the word @code{and} to link the clauses,
2545 in which case they are processed in parallel (as if by @code{let}
2546 and @code{psetq}).
2547
2548 @example
2549 (loop for x below 5 for y = nil then x collect (list x y))
2550 @result{} ((0 nil) (1 1) (2 2) (3 3) (4 4))
2551 (loop for x below 5 and y = nil then x collect (list x y))
2552 @result{} ((0 nil) (1 0) (2 1) (3 2) (4 3))
2553 @end example
2554
2555 @noindent
2556 In the first loop, @code{y} is set based on the value of @code{x}
2557 that was just set by the previous clause; in the second loop,
2558 @code{x} and @code{y} are set simultaneously so @code{y} is set
2559 based on the value of @code{x} left over from the previous time
2560 through the loop.
2561
2562 Another feature of the @code{loop} macro is @dfn{destructuring},
2563 similar in concept to the destructuring provided by @code{defmacro}.
2564 The @var{var} part of any @code{for} clause can be given as a list
2565 of variables instead of a single variable. The values produced
2566 during loop execution must be lists; the values in the lists are
2567 stored in the corresponding variables.
2568
2569 @example
2570 (loop for (x y) in '((2 3) (4 5) (6 7)) collect (+ x y))
2571 @result{} (5 9 13)
2572 @end example
2573
2574 In loop destructuring, if there are more values than variables
2575 the trailing values are ignored, and if there are more variables
2576 than values the trailing variables get the value @code{nil}.
2577 If @code{nil} is used as a variable name, the corresponding
2578 values are ignored. Destructuring may be nested, and dotted
2579 lists of variables like @code{(x . y)} are allowed.
2580
2581 @node Iteration Clauses, Accumulation Clauses, For Clauses, Loop Facility
2582 @subsection Iteration Clauses
2583
2584 @noindent
2585 Aside from @code{for} clauses, there are several other loop clauses
2586 that control the way the loop operates. They might be used by
2587 themselves, or in conjunction with one or more @code{for} clauses.
2588
2589 @table @code
2590 @item repeat @var{integer}
2591 This clause simply counts up to the specified number using an
2592 internal temporary variable. The loops
2593
2594 @example
2595 (loop repeat (1+ n) do ...)
2596 (loop for temp to n do ...)
2597 @end example
2598
2599 @noindent
2600 are identical except that the second one forces you to choose
2601 a name for a variable you aren't actually going to use.
2602
2603 @item while @var{condition}
2604 This clause stops the loop when the specified condition (any Lisp
2605 expression) becomes @code{nil}. For example, the following two
2606 loops are equivalent, except for the implicit @code{nil} block
2607 that surrounds the second one:
2608
2609 @example
2610 (while @var{cond} @var{forms}@dots{})
2611 (loop while @var{cond} do @var{forms}@dots{})
2612 @end example
2613
2614 @item until @var{condition}
2615 This clause stops the loop when the specified condition is true,
2616 i.e., non-@code{nil}.
2617
2618 @item always @var{condition}
2619 This clause stops the loop when the specified condition is @code{nil}.
2620 Unlike @code{while}, it stops the loop using @code{return nil} so that
2621 the @code{finally} clauses are not executed. If all the conditions
2622 were non-@code{nil}, the loop returns @code{t}:
2623
2624 @example
2625 (if (loop for size in size-list always (> size 10))
2626 (some-big-sizes)
2627 (no-big-sizes))
2628 @end example
2629
2630 @item never @var{condition}
2631 This clause is like @code{always}, except that the loop returns
2632 @code{t} if any conditions were false, or @code{nil} otherwise.
2633
2634 @item thereis @var{condition}
2635 This clause stops the loop when the specified form is non-@code{nil};
2636 in this case, it returns that non-@code{nil} value. If all the
2637 values were @code{nil}, the loop returns @code{nil}.
2638 @end table
2639
2640 @node Accumulation Clauses, Other Clauses, Iteration Clauses, Loop Facility
2641 @subsection Accumulation Clauses
2642
2643 @noindent
2644 These clauses cause the loop to accumulate information about the
2645 specified Lisp @var{form}. The accumulated result is returned
2646 from the loop unless overridden, say, by a @code{return} clause.
2647
2648 @table @code
2649 @item collect @var{form}
2650 This clause collects the values of @var{form} into a list. Several
2651 examples of @code{collect} appear elsewhere in this manual.
2652
2653 The word @code{collecting} is a synonym for @code{collect}, and
2654 likewise for the other accumulation clauses.
2655
2656 @item append @var{form}
2657 This clause collects lists of values into a result list using
2658 @code{append}.
2659
2660 @item nconc @var{form}
2661 This clause collects lists of values into a result list by
2662 destructively modifying the lists rather than copying them.
2663
2664 @item concat @var{form}
2665 This clause concatenates the values of the specified @var{form}
2666 into a string. (It and the following clause are extensions to
2667 standard Common Lisp.)
2668
2669 @item vconcat @var{form}
2670 This clause concatenates the values of the specified @var{form}
2671 into a vector.
2672
2673 @item count @var{form}
2674 This clause counts the number of times the specified @var{form}
2675 evaluates to a non-@code{nil} value.
2676
2677 @item sum @var{form}
2678 This clause accumulates the sum of the values of the specified
2679 @var{form}, which must evaluate to a number.
2680
2681 @item maximize @var{form}
2682 This clause accumulates the maximum value of the specified @var{form},
2683 which must evaluate to a number. The return value is undefined if
2684 @code{maximize} is executed zero times.
2685
2686 @item minimize @var{form}
2687 This clause accumulates the minimum value of the specified @var{form}.
2688 @end table
2689
2690 Accumulation clauses can be followed by @samp{into @var{var}} to
2691 cause the data to be collected into variable @var{var} (which is
2692 automatically @code{let}-bound during the loop) rather than an
2693 unnamed temporary variable. Also, @code{into} accumulations do
2694 not automatically imply a return value. The loop must use some
2695 explicit mechanism, such as @code{finally return}, to return
2696 the accumulated result.
2697
2698 It is valid for several accumulation clauses of the same type to
2699 accumulate into the same place. From Steele:
2700
2701 @example
2702 (loop for name in '(fred sue alice joe june)
2703 for kids in '((bob ken) () () (kris sunshine) ())
2704 collect name
2705 append kids)
2706 @result{} (fred bob ken sue alice joe kris sunshine june)
2707 @end example
2708
2709 @node Other Clauses, , Accumulation Clauses, Loop Facility
2710 @subsection Other Clauses
2711
2712 @noindent
2713 This section describes the remaining loop clauses.
2714
2715 @table @code
2716 @item with @var{var} = @var{value}
2717 This clause binds a variable to a value around the loop, but
2718 otherwise leaves the variable alone during the loop. The following
2719 loops are basically equivalent:
2720
2721 @example
2722 (loop with x = 17 do ...)
2723 (let ((x 17)) (loop do ...))
2724 (loop for x = 17 then x do ...)
2725 @end example
2726
2727 Naturally, the variable @var{var} might be used for some purpose
2728 in the rest of the loop. For example:
2729
2730 @example
2731 (loop for x in my-list with res = nil do (push x res)
2732 finally return res)
2733 @end example
2734
2735 This loop inserts the elements of @code{my-list} at the front of
2736 a new list being accumulated in @code{res}, then returns the
2737 list @code{res} at the end of the loop. The effect is similar
2738 to that of a @code{collect} clause, but the list gets reversed
2739 by virtue of the fact that elements are being pushed onto the
2740 front of @code{res} rather than the end.
2741
2742 If you omit the @code{=} term, the variable is initialized to
2743 @code{nil}. (Thus the @samp{= nil} in the above example is
2744 unnecessary.)
2745
2746 Bindings made by @code{with} are sequential by default, as if
2747 by @code{let*}. Just like @code{for} clauses, @code{with} clauses
2748 can be linked with @code{and} to cause the bindings to be made by
2749 @code{let} instead.
2750
2751 @item if @var{condition} @var{clause}
2752 This clause executes the following loop clause only if the specified
2753 condition is true. The following @var{clause} should be an accumulation,
2754 @code{do}, @code{return}, @code{if}, or @code{unless} clause.
2755 Several clauses may be linked by separating them with @code{and}.
2756 These clauses may be followed by @code{else} and a clause or clauses
2757 to execute if the condition was false. The whole construct may
2758 optionally be followed by the word @code{end} (which may be used to
2759 disambiguate an @code{else} or @code{and} in a nested @code{if}).
2760
2761 The actual non-@code{nil} value of the condition form is available
2762 by the name @code{it} in the ``then'' part. For example:
2763
2764 @example
2765 (setq funny-numbers '(6 13 -1))
2766 @result{} (6 13 -1)
2767 (loop for x below 10
2768 if (oddp x)
2769 collect x into odds
2770 and if (memq x funny-numbers) return (cdr it) end
2771 else
2772 collect x into evens
2773 finally return (vector odds evens))
2774 @result{} [(1 3 5 7 9) (0 2 4 6 8)]
2775 (setq funny-numbers '(6 7 13 -1))
2776 @result{} (6 7 13 -1)
2777 (loop <@r{same thing again}>)
2778 @result{} (13 -1)
2779 @end example
2780
2781 Note the use of @code{and} to put two clauses into the ``then''
2782 part, one of which is itself an @code{if} clause. Note also that
2783 @code{end}, while normally optional, was necessary here to make
2784 it clear that the @code{else} refers to the outermost @code{if}
2785 clause. In the first case, the loop returns a vector of lists
2786 of the odd and even values of @var{x}. In the second case, the
2787 odd number 7 is one of the @code{funny-numbers} so the loop
2788 returns early; the actual returned value is based on the result
2789 of the @code{memq} call.
2790
2791 @item when @var{condition} @var{clause}
2792 This clause is just a synonym for @code{if}.
2793
2794 @item unless @var{condition} @var{clause}
2795 The @code{unless} clause is just like @code{if} except that the
2796 sense of the condition is reversed.
2797
2798 @item named @var{name}
2799 This clause gives a name other than @code{nil} to the implicit
2800 block surrounding the loop. The @var{name} is the symbol to be
2801 used as the block name.
2802
2803 @item initially [do] @var{forms}...
2804 This keyword introduces one or more Lisp forms which will be
2805 executed before the loop itself begins (but after any variables
2806 requested by @code{for} or @code{with} have been bound to their
2807 initial values). @code{initially} clauses can appear anywhere;
2808 if there are several, they are executed in the order they appear
2809 in the loop. The keyword @code{do} is optional.
2810
2811 @item finally [do] @var{forms}...
2812 This introduces Lisp forms which will be executed after the loop
2813 finishes (say, on request of a @code{for} or @code{while}).
2814 @code{initially} and @code{finally} clauses may appear anywhere
2815 in the loop construct, but they are executed (in the specified
2816 order) at the beginning or end, respectively, of the loop.
2817
2818 @item finally return @var{form}
2819 This says that @var{form} should be executed after the loop
2820 is done to obtain a return value. (Without this, or some other
2821 clause like @code{collect} or @code{return}, the loop will simply
2822 return @code{nil}.) Variables bound by @code{for}, @code{with},
2823 or @code{into} will still contain their final values when @var{form}
2824 is executed.
2825
2826 @item do @var{forms}...
2827 The word @code{do} may be followed by any number of Lisp expressions
2828 which are executed as an implicit @code{progn} in the body of the
2829 loop. Many of the examples in this section illustrate the use of
2830 @code{do}.
2831
2832 @item return @var{form}
2833 This clause causes the loop to return immediately. The following
2834 Lisp form is evaluated to give the return value of the @code{loop}
2835 form. The @code{finally} clauses, if any, are not executed.
2836 Of course, @code{return} is generally used inside an @code{if} or
2837 @code{unless}, as its use in a top-level loop clause would mean
2838 the loop would never get to ``loop'' more than once.
2839
2840 The clause @samp{return @var{form}} is equivalent to
2841 @samp{do (return @var{form})} (or @code{return-from} if the loop
2842 was named). The @code{return} clause is implemented a bit more
2843 efficiently, though.
2844 @end table
2845
2846 While there is no high-level way to add user extensions to @code{loop}
2847 (comparable to @code{defsetf} for @code{setf}, say), this package
2848 does offer two properties called @code{cl-loop-handler} and
2849 @code{cl-loop-for-handler} which are functions to be called when
2850 a given symbol is encountered as a top-level loop clause or
2851 @code{for} clause, respectively. Consult the source code in
2852 file @file{cl-macs.el} for details.
2853
2854 This package's @code{loop} macro is compatible with that of Common
2855 Lisp, except that a few features are not implemented: @code{loop-finish}
2856 and data-type specifiers. Naturally, the @code{for} clauses which
2857 iterate over keymaps, overlays, intervals, frames, windows, and
2858 buffers are Emacs-specific extensions.
2859
2860 @node Multiple Values, , Loop Facility, Control Structure
2861 @section Multiple Values
2862
2863 @noindent
2864 Common Lisp functions can return zero or more results. Emacs Lisp
2865 functions, by contrast, always return exactly one result. This
2866 package makes no attempt to emulate Common Lisp multiple return
2867 values; Emacs versions of Common Lisp functions that return more
2868 than one value either return just the first value (as in
2869 @code{compiler-macroexpand}) or return a list of values (as in
2870 @code{get-setf-method}). This package @emph{does} define placeholders
2871 for the Common Lisp functions that work with multiple values, but
2872 in Emacs Lisp these functions simply operate on lists instead.
2873 The @code{values} form, for example, is a synonym for @code{list}
2874 in Emacs.
2875
2876 @defspec multiple-value-bind (var@dots{}) values-form forms@dots{}
2877 This form evaluates @var{values-form}, which must return a list of
2878 values. It then binds the @var{var}s to these respective values,
2879 as if by @code{let}, and then executes the body @var{forms}.
2880 If there are more @var{var}s than values, the extra @var{var}s
2881 are bound to @code{nil}. If there are fewer @var{var}s than
2882 values, the excess values are ignored.
2883 @end defspec
2884
2885 @defspec multiple-value-setq (var@dots{}) form
2886 This form evaluates @var{form}, which must return a list of values.
2887 It then sets the @var{var}s to these respective values, as if by
2888 @code{setq}. Extra @var{var}s or values are treated the same as
2889 in @code{multiple-value-bind}.
2890 @end defspec
2891
2892 The older Quiroz package attempted a more faithful (but still
2893 imperfect) emulation of Common Lisp multiple values. The old
2894 method ``usually'' simulated true multiple values quite well,
2895 but under certain circumstances would leave spurious return
2896 values in memory where a later, unrelated @code{multiple-value-bind}
2897 form would see them.
2898
2899 Since a perfect emulation is not feasible in Emacs Lisp, this
2900 package opts to keep it as simple and predictable as possible.
2901
2902 @node Macros, Declarations, Control Structure, Top
2903 @chapter Macros
2904
2905 @noindent
2906 This package implements the various Common Lisp features of
2907 @code{defmacro}, such as destructuring, @code{&environment},
2908 and @code{&body}. Top-level @code{&whole} is not implemented
2909 for @code{defmacro} due to technical difficulties.
2910 @xref{Argument Lists}.
2911
2912 Destructuring is made available to the user by way of the
2913 following macro:
2914
2915 @defspec destructuring-bind arglist expr forms@dots{}
2916 This macro expands to code which executes @var{forms}, with
2917 the variables in @var{arglist} bound to the list of values
2918 returned by @var{expr}. The @var{arglist} can include all
2919 the features allowed for @code{defmacro} argument lists,
2920 including destructuring. (The @code{&environment} keyword
2921 is not allowed.) The macro expansion will signal an error
2922 if @var{expr} returns a list of the wrong number of arguments
2923 or with incorrect keyword arguments.
2924 @end defspec
2925
2926 This package also includes the Common Lisp @code{define-compiler-macro}
2927 facility, which allows you to define compile-time expansions and
2928 optimizations for your functions.
2929
2930 @defspec define-compiler-macro name arglist forms@dots{}
2931 This form is similar to @code{defmacro}, except that it only expands
2932 calls to @var{name} at compile-time; calls processed by the Lisp
2933 interpreter are not expanded, nor are they expanded by the
2934 @code{macroexpand} function.
2935
2936 The argument list may begin with a @code{&whole} keyword and a
2937 variable. This variable is bound to the macro-call form itself,
2938 i.e., to a list of the form @samp{(@var{name} @var{args}@dots{})}.
2939 If the macro expander returns this form unchanged, then the
2940 compiler treats it as a normal function call. This allows
2941 compiler macros to work as optimizers for special cases of a
2942 function, leaving complicated cases alone.
2943
2944 For example, here is a simplified version of a definition that
2945 appears as a standard part of this package:
2946
2947 @example
2948 (define-compiler-macro member* (&whole form a list &rest keys)
2949 (if (and (null keys)
2950 (eq (car-safe a) 'quote)
2951 (not (floatp-safe (cadr a))))
2952 (list 'memq a list)
2953 form))
2954 @end example
2955
2956 @noindent
2957 This definition causes @code{(member* @var{a} @var{list})} to change
2958 to a call to the faster @code{memq} in the common case where @var{a}
2959 is a non-floating-point constant; if @var{a} is anything else, or
2960 if there are any keyword arguments in the call, then the original
2961 @code{member*} call is left intact. (The actual compiler macro
2962 for @code{member*} optimizes a number of other cases, including
2963 common @code{:test} predicates.)
2964 @end defspec
2965
2966 @defun compiler-macroexpand form
2967 This function is analogous to @code{macroexpand}, except that it
2968 expands compiler macros rather than regular macros. It returns
2969 @var{form} unchanged if it is not a call to a function for which
2970 a compiler macro has been defined, or if that compiler macro
2971 decided to punt by returning its @code{&whole} argument. Like
2972 @code{macroexpand}, it expands repeatedly until it reaches a form
2973 for which no further expansion is possible.
2974 @end defun
2975
2976 @xref{Macro Bindings}, for descriptions of the @code{macrolet}
2977 and @code{symbol-macrolet} forms for making ``local'' macro
2978 definitions.
2979
2980 @node Declarations, Symbols, Macros, Top
2981 @chapter Declarations
2982
2983 @noindent
2984 Common Lisp includes a complex and powerful ``declaration''
2985 mechanism that allows you to give the compiler special hints
2986 about the types of data that will be stored in particular variables,
2987 and about the ways those variables and functions will be used. This
2988 package defines versions of all the Common Lisp declaration forms:
2989 @code{declare}, @code{locally}, @code{proclaim}, @code{declaim},
2990 and @code{the}.
2991
2992 Most of the Common Lisp declarations are not currently useful in
2993 Emacs Lisp, as the byte-code system provides little opportunity
2994 to benefit from type information, and @code{special} declarations
2995 are redundant in a fully dynamically-scoped Lisp. A few
2996 declarations are meaningful when the optimizing byte
2997 compiler is being used, however. Under the earlier non-optimizing
2998 compiler, these declarations will effectively be ignored.
2999
3000 @defun proclaim decl-spec
3001 This function records a ``global'' declaration specified by
3002 @var{decl-spec}. Since @code{proclaim} is a function, @var{decl-spec}
3003 is evaluated and thus should normally be quoted.
3004 @end defun
3005
3006 @defspec declaim decl-specs@dots{}
3007 This macro is like @code{proclaim}, except that it takes any number
3008 of @var{decl-spec} arguments, and the arguments are unevaluated and
3009 unquoted. The @code{declaim} macro also puts an @code{(eval-when
3010 (compile load eval) ...)} around the declarations so that they will
3011 be registered at compile-time as well as at run-time. (This is vital,
3012 since normally the declarations are meant to influence the way the
3013 compiler treats the rest of the file that contains the @code{declaim}
3014 form.)
3015 @end defspec
3016
3017 @defspec declare decl-specs@dots{}
3018 This macro is used to make declarations within functions and other
3019 code. Common Lisp allows declarations in various locations, generally
3020 at the beginning of any of the many ``implicit @code{progn}s''
3021 throughout Lisp syntax, such as function bodies, @code{let} bodies,
3022 etc. Currently the only declaration understood by @code{declare}
3023 is @code{special}.
3024 @end defspec
3025
3026 @defspec locally declarations@dots{} forms@dots{}
3027 In this package, @code{locally} is no different from @code{progn}.
3028 @end defspec
3029
3030 @defspec the type form
3031 Type information provided by @code{the} is ignored in this package;
3032 in other words, @code{(the @var{type} @var{form})} is equivalent
3033 to @var{form}. Future versions of the optimizing byte-compiler may
3034 make use of this information.
3035
3036 For example, @code{mapcar} can map over both lists and arrays. It is
3037 hard for the compiler to expand @code{mapcar} into an in-line loop
3038 unless it knows whether the sequence will be a list or an array ahead
3039 of time. With @code{(mapcar 'car (the vector foo))}, a future
3040 compiler would have enough information to expand the loop in-line.
3041 For now, Emacs Lisp will treat the above code as exactly equivalent
3042 to @code{(mapcar 'car foo)}.
3043 @end defspec
3044
3045 Each @var{decl-spec} in a @code{proclaim}, @code{declaim}, or
3046 @code{declare} should be a list beginning with a symbol that says
3047 what kind of declaration it is. This package currently understands
3048 @code{special}, @code{inline}, @code{notinline}, @code{optimize},
3049 and @code{warn} declarations. (The @code{warn} declaration is an
3050 extension of standard Common Lisp.) Other Common Lisp declarations,
3051 such as @code{type} and @code{ftype}, are silently ignored.
3052
3053 @table @code
3054 @item special
3055 Since all variables in Emacs Lisp are ``special'' (in the Common
3056 Lisp sense), @code{special} declarations are only advisory. They
3057 simply tell the optimizing byte compiler that the specified
3058 variables are intentionally being referred to without being
3059 bound in the body of the function. The compiler normally emits
3060 warnings for such references, since they could be typographical
3061 errors for references to local variables.
3062
3063 The declaration @code{(declare (special @var{var1} @var{var2}))} is
3064 equivalent to @code{(defvar @var{var1}) (defvar @var{var2})} in the
3065 optimizing compiler, or to nothing at all in older compilers (which
3066 do not warn for non-local references).
3067
3068 In top-level contexts, it is generally better to write
3069 @code{(defvar @var{var})} than @code{(declaim (special @var{var}))},
3070 since @code{defvar} makes your intentions clearer. But the older
3071 byte compilers can not handle @code{defvar}s appearing inside of
3072 functions, while @code{(declare (special @var{var}))} takes care
3073 to work correctly with all compilers.
3074
3075 @item inline
3076 The @code{inline} @var{decl-spec} lists one or more functions
3077 whose bodies should be expanded ``in-line'' into calling functions
3078 whenever the compiler is able to arrange for it. For example,
3079 the Common Lisp function @code{cadr} is declared @code{inline}
3080 by this package so that the form @code{(cadr @var{x})} will
3081 expand directly into @code{(car (cdr @var{x}))} when it is called
3082 in user functions, for a savings of one (relatively expensive)
3083 function call.
3084
3085 The following declarations are all equivalent. Note that the
3086 @code{defsubst} form is a convenient way to define a function
3087 and declare it inline all at once.
3088
3089 @example
3090 (declaim (inline foo bar))
3091 (eval-when (compile load eval) (proclaim '(inline foo bar)))
3092 (defsubst foo (...) ...) ; instead of defun
3093 @end example
3094
3095 @strong{Please note:} this declaration remains in effect after the
3096 containing source file is done. It is correct to use it to
3097 request that a function you have defined should be inlined,
3098 but it is impolite to use it to request inlining of an external
3099 function.
3100
3101 In Common Lisp, it is possible to use @code{(declare (inline @dots{}))}
3102 before a particular call to a function to cause just that call to
3103 be inlined; the current byte compilers provide no way to implement
3104 this, so @code{(declare (inline @dots{}))} is currently ignored by
3105 this package.
3106
3107 @item notinline
3108 The @code{notinline} declaration lists functions which should
3109 not be inlined after all; it cancels a previous @code{inline}
3110 declaration.
3111
3112 @item optimize
3113 This declaration controls how much optimization is performed by
3114 the compiler. Naturally, it is ignored by the earlier non-optimizing
3115 compilers.
3116
3117 The word @code{optimize} is followed by any number of lists like
3118 @code{(speed 3)} or @code{(safety 2)}. Common Lisp defines several
3119 optimization ``qualities''; this package ignores all but @code{speed}
3120 and @code{safety}. The value of a quality should be an integer from
3121 0 to 3, with 0 meaning ``unimportant'' and 3 meaning ``very important.''
3122 The default level for both qualities is 1.
3123
3124 In this package, with the optimizing compiler, the
3125 @code{speed} quality is tied to the @code{byte-compile-optimize}
3126 flag, which is set to @code{nil} for @code{(speed 0)} and to
3127 @code{t} for higher settings; and the @code{safety} quality is
3128 tied to the @code{byte-compile-delete-errors} flag, which is
3129 set to @code{t} for @code{(safety 3)} and to @code{nil} for all
3130 lower settings. (The latter flag controls whether the compiler
3131 is allowed to optimize out code whose only side-effect could
3132 be to signal an error, e.g., rewriting @code{(progn foo bar)} to
3133 @code{bar} when it is not known whether @code{foo} will be bound
3134 at run-time.)
3135
3136 Note that even compiling with @code{(safety 0)}, the Emacs
3137 byte-code system provides sufficient checking to prevent real
3138 harm from being done. For example, barring serious bugs in
3139 Emacs itself, Emacs will not crash with a segmentation fault
3140 just because of an error in a fully-optimized Lisp program.
3141
3142 The @code{optimize} declaration is normally used in a top-level
3143 @code{proclaim} or @code{declaim} in a file; Common Lisp allows
3144 it to be used with @code{declare} to set the level of optimization
3145 locally for a given form, but this will not work correctly with the
3146 current version of the optimizing compiler. (The @code{declare}
3147 will set the new optimization level, but that level will not
3148 automatically be unset after the enclosing form is done.)
3149
3150 @item warn
3151 This declaration controls what sorts of warnings are generated
3152 by the byte compiler. Again, only the optimizing compiler
3153 generates warnings. The word @code{warn} is followed by any
3154 number of ``warning qualities,'' similar in form to optimization
3155 qualities. The currently supported warning types are
3156 @code{redefine}, @code{callargs}, @code{unresolved}, and
3157 @code{free-vars}; in the current system, a value of 0 will
3158 disable these warnings and any higher value will enable them.
3159 See the documentation for the optimizing byte compiler for details.
3160 @end table
3161
3162 @node Symbols, Numbers, Declarations, Top
3163 @chapter Symbols
3164
3165 @noindent
3166 This package defines several symbol-related features that were
3167 missing from Emacs Lisp.
3168
3169 @menu
3170 * Property Lists:: `get*', `remprop', `getf', `remf'
3171 * Creating Symbols:: `gensym', `gentemp'
3172 @end menu
3173
3174 @node Property Lists, Creating Symbols, Symbols, Symbols
3175 @section Property Lists
3176
3177 @noindent
3178 These functions augment the standard Emacs Lisp functions @code{get}
3179 and @code{put} for operating on properties attached to symbols.
3180 There are also functions for working with property lists as
3181 first-class data structures not attached to particular symbols.
3182
3183 @defun get* symbol property &optional default
3184 This function is like @code{get}, except that if the property is
3185 not found, the @var{default} argument provides the return value.
3186 (The Emacs Lisp @code{get} function always uses @code{nil} as
3187 the default; this package's @code{get*} is equivalent to Common
3188 Lisp's @code{get}.)
3189
3190 The @code{get*} function is @code{setf}-able; when used in this
3191 fashion, the @var{default} argument is allowed but ignored.
3192 @end defun
3193
3194 @defun remprop symbol property
3195 This function removes the entry for @var{property} from the property
3196 list of @var{symbol}. It returns a true value if the property was
3197 indeed found and removed, or @code{nil} if there was no such property.
3198 (This function was probably omitted from Emacs originally because,
3199 since @code{get} did not allow a @var{default}, it was very difficult
3200 to distinguish between a missing property and a property whose value
3201 was @code{nil}; thus, setting a property to @code{nil} was close
3202 enough to @code{remprop} for most purposes.)
3203 @end defun
3204
3205 @defun getf place property &optional default
3206 This function scans the list @var{place} as if it were a property
3207 list, i.e., a list of alternating property names and values. If
3208 an even-numbered element of @var{place} is found which is @code{eq}
3209 to @var{property}, the following odd-numbered element is returned.
3210 Otherwise, @var{default} is returned (or @code{nil} if no default
3211 is given).
3212
3213 In particular,
3214
3215 @example
3216 (get sym prop) @equiv{} (getf (symbol-plist sym) prop)
3217 @end example
3218
3219 It is valid to use @code{getf} as a @code{setf} place, in which case
3220 its @var{place} argument must itself be a valid @code{setf} place.
3221 The @var{default} argument, if any, is ignored in this context.
3222 The effect is to change (via @code{setcar}) the value cell in the
3223 list that corresponds to @var{property}, or to cons a new property-value
3224 pair onto the list if the property is not yet present.
3225
3226 @example
3227 (put sym prop val) @equiv{} (setf (getf (symbol-plist sym) prop) val)
3228 @end example
3229
3230 The @code{get} and @code{get*} functions are also @code{setf}-able.
3231 The fact that @code{default} is ignored can sometimes be useful:
3232
3233 @example
3234 (incf (get* 'foo 'usage-count 0))
3235 @end example
3236
3237 Here, symbol @code{foo}'s @code{usage-count} property is incremented
3238 if it exists, or set to 1 (an incremented 0) otherwise.
3239
3240 When not used as a @code{setf} form, @code{getf} is just a regular
3241 function and its @var{place} argument can actually be any Lisp
3242 expression.
3243 @end defun
3244
3245 @defspec remf place property
3246 This macro removes the property-value pair for @var{property} from
3247 the property list stored at @var{place}, which is any @code{setf}-able
3248 place expression. It returns true if the property was found. Note
3249 that if @var{property} happens to be first on the list, this will
3250 effectively do a @code{(setf @var{place} (cddr @var{place}))},
3251 whereas if it occurs later, this simply uses @code{setcdr} to splice
3252 out the property and value cells.
3253 @end defspec
3254
3255 @iftex
3256 @secno=2
3257 @end iftex
3258
3259 @node Creating Symbols, , Property Lists, Symbols
3260 @section Creating Symbols
3261
3262 @noindent
3263 These functions create unique symbols, typically for use as
3264 temporary variables.
3265
3266 @defun gensym &optional x
3267 This function creates a new, uninterned symbol (using @code{make-symbol})
3268 with a unique name. (The name of an uninterned symbol is relevant
3269 only if the symbol is printed.) By default, the name is generated
3270 from an increasing sequence of numbers, @samp{G1000}, @samp{G1001},
3271 @samp{G1002}, etc. If the optional argument @var{x} is a string, that
3272 string is used as a prefix instead of @samp{G}. Uninterned symbols
3273 are used in macro expansions for temporary variables, to ensure that
3274 their names will not conflict with ``real'' variables in the user's
3275 code.
3276 @end defun
3277
3278 @defvar *gensym-counter*
3279 This variable holds the counter used to generate @code{gensym} names.
3280 It is incremented after each use by @code{gensym}. In Common Lisp
3281 this is initialized with 0, but this package initializes it with a
3282 random (time-dependent) value to avoid trouble when two files that
3283 each used @code{gensym} in their compilation are loaded together.
3284 (Uninterned symbols become interned when the compiler writes them
3285 out to a file and the Emacs loader loads them, so their names have to
3286 be treated a bit more carefully than in Common Lisp where uninterned
3287 symbols remain uninterned after loading.)
3288 @end defvar
3289
3290 @defun gentemp &optional x
3291 This function is like @code{gensym}, except that it produces a new
3292 @emph{interned} symbol. If the symbol that is generated already
3293 exists, the function keeps incrementing the counter and trying
3294 again until a new symbol is generated.
3295 @end defun
3296
3297 The Quiroz @file{cl.el} package also defined a @code{defkeyword}
3298 form for creating self-quoting keyword symbols. This package
3299 automatically creates all keywords that are called for by
3300 @code{&key} argument specifiers, and discourages the use of
3301 keywords as data unrelated to keyword arguments, so the
3302 @code{defkeyword} form has been discontinued.
3303
3304 @iftex
3305 @chapno=11
3306 @end iftex
3307
3308 @node Numbers, Sequences, Symbols, Top
3309 @chapter Numbers
3310
3311 @noindent
3312 This section defines a few simple Common Lisp operations on numbers
3313 which were left out of Emacs Lisp.
3314
3315 @menu
3316 * Predicates on Numbers:: `plusp', `oddp', `floatp-safe', etc.
3317 * Numerical Functions:: `abs', `floor*', etc.
3318 * Random Numbers:: `random*', `make-random-state'
3319 * Implementation Parameters:: `most-positive-float'
3320 @end menu
3321
3322 @iftex
3323 @secno=1
3324 @end iftex
3325
3326 @node Predicates on Numbers, Numerical Functions, Numbers, Numbers
3327 @section Predicates on Numbers
3328
3329 @noindent
3330 These functions return @code{t} if the specified condition is
3331 true of the numerical argument, or @code{nil} otherwise.
3332
3333 @defun plusp number
3334 This predicate tests whether @var{number} is positive. It is an
3335 error if the argument is not a number.
3336 @end defun
3337
3338 @defun minusp number
3339 This predicate tests whether @var{number} is negative. It is an
3340 error if the argument is not a number.
3341 @end defun
3342
3343 @defun oddp integer
3344 This predicate tests whether @var{integer} is odd. It is an
3345 error if the argument is not an integer.
3346 @end defun
3347
3348 @defun evenp integer
3349 This predicate tests whether @var{integer} is even. It is an
3350 error if the argument is not an integer.
3351 @end defun
3352
3353 @defun floatp-safe object
3354 This predicate tests whether @var{object} is a floating-point
3355 number. On systems that support floating-point, this is equivalent
3356 to @code{floatp}. On other systems, this always returns @code{nil}.
3357 @end defun
3358
3359 @iftex
3360 @secno=3
3361 @end iftex
3362
3363 @node Numerical Functions, Random Numbers, Predicates on Numbers, Numbers
3364 @section Numerical Functions
3365
3366 @noindent
3367 These functions perform various arithmetic operations on numbers.
3368
3369 @defun gcd &rest integers
3370 This function returns the Greatest Common Divisor of the arguments.
3371 For one argument, it returns the absolute value of that argument.
3372 For zero arguments, it returns zero.
3373 @end defun
3374
3375 @defun lcm &rest integers
3376 This function returns the Least Common Multiple of the arguments.
3377 For one argument, it returns the absolute value of that argument.
3378 For zero arguments, it returns one.
3379 @end defun
3380
3381 @defun isqrt integer
3382 This function computes the ``integer square root'' of its integer
3383 argument, i.e., the greatest integer less than or equal to the true
3384 square root of the argument.
3385 @end defun
3386
3387 @defun floor* number &optional divisor
3388 This function implements the Common Lisp @code{floor} function.
3389 It is called @code{floor*} to avoid name conflicts with the
3390 simpler @code{floor} function built-in to Emacs.
3391
3392 With one argument, @code{floor*} returns a list of two numbers:
3393 The argument rounded down (toward minus infinity) to an integer,
3394 and the ``remainder'' which would have to be added back to the
3395 first return value to yield the argument again. If the argument
3396 is an integer @var{x}, the result is always the list @code{(@var{x} 0)}.
3397 If the argument is a floating-point number, the first
3398 result is a Lisp integer and the second is a Lisp float between
3399 0 (inclusive) and 1 (exclusive).
3400
3401 With two arguments, @code{floor*} divides @var{number} by
3402 @var{divisor}, and returns the floor of the quotient and the
3403 corresponding remainder as a list of two numbers. If
3404 @code{(floor* @var{x} @var{y})} returns @code{(@var{q} @var{r})},
3405 then @code{@var{q}*@var{y} + @var{r} = @var{x}}, with @var{r}
3406 between 0 (inclusive) and @var{r} (exclusive). Also, note
3407 that @code{(floor* @var{x})} is exactly equivalent to
3408 @code{(floor* @var{x} 1)}.
3409
3410 This function is entirely compatible with Common Lisp's @code{floor}
3411 function, except that it returns the two results in a list since
3412 Emacs Lisp does not support multiple-valued functions.
3413 @end defun
3414
3415 @defun ceiling* number &optional divisor
3416 This function implements the Common Lisp @code{ceiling} function,
3417 which is analogous to @code{floor} except that it rounds the
3418 argument or quotient of the arguments up toward plus infinity.
3419 The remainder will be between 0 and minus @var{r}.
3420 @end defun
3421
3422 @defun truncate* number &optional divisor
3423 This function implements the Common Lisp @code{truncate} function,
3424 which is analogous to @code{floor} except that it rounds the
3425 argument or quotient of the arguments toward zero. Thus it is
3426 equivalent to @code{floor*} if the argument or quotient is
3427 positive, or to @code{ceiling*} otherwise. The remainder has
3428 the same sign as @var{number}.
3429 @end defun
3430
3431 @defun round* number &optional divisor
3432 This function implements the Common Lisp @code{round} function,
3433 which is analogous to @code{floor} except that it rounds the
3434 argument or quotient of the arguments to the nearest integer.
3435 In the case of a tie (the argument or quotient is exactly
3436 halfway between two integers), it rounds to the even integer.
3437 @end defun
3438
3439 @defun mod* number divisor
3440 This function returns the same value as the second return value
3441 of @code{floor}.
3442 @end defun
3443
3444 @defun rem* number divisor
3445 This function returns the same value as the second return value
3446 of @code{truncate}.
3447 @end defun
3448
3449 These definitions are compatible with those in the Quiroz
3450 @file{cl.el} package, except that this package appends @samp{*}
3451 to certain function names to avoid conflicts with existing
3452 Emacs functions, and that the mechanism for returning
3453 multiple values is different.
3454
3455 @iftex
3456 @secno=8
3457 @end iftex
3458
3459 @node Random Numbers, Implementation Parameters, Numerical Functions, Numbers
3460 @section Random Numbers
3461
3462 @noindent
3463 This package also provides an implementation of the Common Lisp
3464 random number generator. It uses its own additive-congruential
3465 algorithm, which is much more likely to give statistically clean
3466 random numbers than the simple generators supplied by many
3467 operating systems.
3468
3469 @defun random* number &optional state
3470 This function returns a random nonnegative number less than
3471 @var{number}, and of the same type (either integer or floating-point).
3472 The @var{state} argument should be a @code{random-state} object
3473 which holds the state of the random number generator. The
3474 function modifies this state object as a side effect. If
3475 @var{state} is omitted, it defaults to the variable
3476 @code{*random-state*}, which contains a pre-initialized
3477 @code{random-state} object.
3478 @end defun
3479
3480 @defvar *random-state*
3481 This variable contains the system ``default'' @code{random-state}
3482 object, used for calls to @code{random*} that do not specify an
3483 alternative state object. Since any number of programs in the
3484 Emacs process may be accessing @code{*random-state*} in interleaved
3485 fashion, the sequence generated from this variable will be
3486 irreproducible for all intents and purposes.
3487 @end defvar
3488
3489 @defun make-random-state &optional state
3490 This function creates or copies a @code{random-state} object.
3491 If @var{state} is omitted or @code{nil}, it returns a new copy of
3492 @code{*random-state*}. This is a copy in the sense that future
3493 sequences of calls to @code{(random* @var{n})} and
3494 @code{(random* @var{n} @var{s})} (where @var{s} is the new
3495 random-state object) will return identical sequences of random
3496 numbers.
3497
3498 If @var{state} is a @code{random-state} object, this function
3499 returns a copy of that object. If @var{state} is @code{t}, this
3500 function returns a new @code{random-state} object seeded from the
3501 date and time. As an extension to Common Lisp, @var{state} may also
3502 be an integer in which case the new object is seeded from that
3503 integer; each different integer seed will result in a completely
3504 different sequence of random numbers.
3505
3506 It is valid to print a @code{random-state} object to a buffer or
3507 file and later read it back with @code{read}. If a program wishes
3508 to use a sequence of pseudo-random numbers which can be reproduced
3509 later for debugging, it can call @code{(make-random-state t)} to
3510 get a new sequence, then print this sequence to a file. When the
3511 program is later rerun, it can read the original run's random-state
3512 from the file.
3513 @end defun
3514
3515 @defun random-state-p object
3516 This predicate returns @code{t} if @var{object} is a
3517 @code{random-state} object, or @code{nil} otherwise.
3518 @end defun
3519
3520 @node Implementation Parameters, , Random Numbers, Numbers
3521 @section Implementation Parameters
3522
3523 @noindent
3524 This package defines several useful constants having to with numbers.
3525
3526 The following parameters have to do with floating-point numbers.
3527 This package determines their values by exercising the computer's
3528 floating-point arithmetic in various ways. Because this operation
3529 might be slow, the code for initializing them is kept in a separate
3530 function that must be called before the parameters can be used.
3531
3532 @defun cl-float-limits
3533 This function makes sure that the Common Lisp floating-point parameters
3534 like @code{most-positive-float} have been initialized. Until it is
3535 called, these parameters will be @code{nil}. If this version of Emacs
3536 does not support floats, the parameters will remain @code{nil}. If the
3537 parameters have already been initialized, the function returns
3538 immediately.
3539
3540 The algorithm makes assumptions that will be valid for most modern
3541 machines, but will fail if the machine's arithmetic is extremely
3542 unusual, e.g., decimal.
3543 @end defun
3544
3545 Since true Common Lisp supports up to four different floating-point
3546 precisions, it has families of constants like
3547 @code{most-positive-single-float}, @code{most-positive-double-float},
3548 @code{most-positive-long-float}, and so on. Emacs has only one
3549 floating-point precision, so this package omits the precision word
3550 from the constants' names.
3551
3552 @defvar most-positive-float
3553 This constant equals the largest value a Lisp float can hold.
3554 For those systems whose arithmetic supports infinities, this is
3555 the largest @emph{finite} value. For IEEE machines, the value
3556 is approximately @code{1.79e+308}.
3557 @end defvar
3558
3559 @defvar most-negative-float
3560 This constant equals the most-negative value a Lisp float can hold.
3561 (It is assumed to be equal to @code{(- most-positive-float)}.)
3562 @end defvar
3563
3564 @defvar least-positive-float
3565 This constant equals the smallest Lisp float value greater than zero.
3566 For IEEE machines, it is about @code{4.94e-324} if denormals are
3567 supported or @code{2.22e-308} if not.
3568 @end defvar
3569
3570 @defvar least-positive-normalized-float
3571 This constant equals the smallest @emph{normalized} Lisp float greater
3572 than zero, i.e., the smallest value for which IEEE denormalization
3573 will not result in a loss of precision. For IEEE machines, this
3574 value is about @code{2.22e-308}. For machines that do not support
3575 the concept of denormalization and gradual underflow, this constant
3576 will always equal @code{least-positive-float}.
3577 @end defvar
3578
3579 @defvar least-negative-float
3580 This constant is the negative counterpart of @code{least-positive-float}.
3581 @end defvar
3582
3583 @defvar least-negative-normalized-float
3584 This constant is the negative counterpart of
3585 @code{least-positive-normalized-float}.
3586 @end defvar
3587
3588 @defvar float-epsilon
3589 This constant is the smallest positive Lisp float that can be added
3590 to 1.0 to produce a distinct value. Adding a smaller number to 1.0
3591 will yield 1.0 again due to roundoff. For IEEE machines, epsilon
3592 is about @code{2.22e-16}.
3593 @end defvar
3594
3595 @defvar float-negative-epsilon
3596 This is the smallest positive value that can be subtracted from
3597 1.0 to produce a distinct value. For IEEE machines, it is about
3598 @code{1.11e-16}.
3599 @end defvar
3600
3601 @iftex
3602 @chapno=13
3603 @end iftex
3604
3605 @node Sequences, Lists, Numbers, Top
3606 @chapter Sequences
3607
3608 @noindent
3609 Common Lisp defines a number of functions that operate on
3610 @dfn{sequences}, which are either lists, strings, or vectors.
3611 Emacs Lisp includes a few of these, notably @code{elt} and
3612 @code{length}; this package defines most of the rest.
3613
3614 @menu
3615 * Sequence Basics:: Arguments shared by all sequence functions
3616 * Mapping over Sequences:: `mapcar*', `mapcan', `map', `every', etc.
3617 * Sequence Functions:: `subseq', `remove*', `substitute', etc.
3618 * Searching Sequences:: `find', `position', `count', `search', etc.
3619 * Sorting Sequences:: `sort*', `stable-sort', `merge'
3620 @end menu
3621
3622 @node Sequence Basics, Mapping over Sequences, Sequences, Sequences
3623 @section Sequence Basics
3624
3625 @noindent
3626 Many of the sequence functions take keyword arguments; @pxref{Argument
3627 Lists}. All keyword arguments are optional and, if specified,
3628 may appear in any order.
3629
3630 The @code{:key} argument should be passed either @code{nil}, or a
3631 function of one argument. This key function is used as a filter
3632 through which the elements of the sequence are seen; for example,
3633 @code{(find x y :key 'car)} is similar to @code{(assoc* x y)}:
3634 It searches for an element of the list whose @code{car} equals
3635 @code{x}, rather than for an element which equals @code{x} itself.
3636 If @code{:key} is omitted or @code{nil}, the filter is effectively
3637 the identity function.
3638
3639 The @code{:test} and @code{:test-not} arguments should be either
3640 @code{nil}, or functions of two arguments. The test function is
3641 used to compare two sequence elements, or to compare a search value
3642 with sequence elements. (The two values are passed to the test
3643 function in the same order as the original sequence function
3644 arguments from which they are derived, or, if they both come from
3645 the same sequence, in the same order as they appear in that sequence.)
3646 The @code{:test} argument specifies a function which must return
3647 true (non-@code{nil}) to indicate a match; instead, you may use
3648 @code{:test-not} to give a function which returns @emph{false} to
3649 indicate a match. The default test function is @code{eql}.
3650
3651 Many functions which take @var{item} and @code{:test} or @code{:test-not}
3652 arguments also come in @code{-if} and @code{-if-not} varieties,
3653 where a @var{predicate} function is passed instead of @var{item},
3654 and sequence elements match if the predicate returns true on them
3655 (or false in the case of @code{-if-not}). For example:
3656
3657 @example
3658 (remove* 0 seq :test '=) @equiv{} (remove-if 'zerop seq)
3659 @end example
3660
3661 @noindent
3662 to remove all zeros from sequence @code{seq}.
3663
3664 Some operations can work on a subsequence of the argument sequence;
3665 these function take @code{:start} and @code{:end} arguments which
3666 default to zero and the length of the sequence, respectively.
3667 Only elements between @var{start} (inclusive) and @var{end}
3668 (exclusive) are affected by the operation. The @var{end} argument
3669 may be passed @code{nil} to signify the length of the sequence;
3670 otherwise, both @var{start} and @var{end} must be integers, with
3671 @code{0 <= @var{start} <= @var{end} <= (length @var{seq})}.
3672 If the function takes two sequence arguments, the limits are
3673 defined by keywords @code{:start1} and @code{:end1} for the first,
3674 and @code{:start2} and @code{:end2} for the second.
3675
3676 A few functions accept a @code{:from-end} argument, which, if
3677 non-@code{nil}, causes the operation to go from right-to-left
3678 through the sequence instead of left-to-right, and a @code{:count}
3679 argument, which specifies an integer maximum number of elements
3680 to be removed or otherwise processed.
3681
3682 The sequence functions make no guarantees about the order in
3683 which the @code{:test}, @code{:test-not}, and @code{:key} functions
3684 are called on various elements. Therefore, it is a bad idea to depend
3685 on side effects of these functions. For example, @code{:from-end}
3686 may cause the sequence to be scanned actually in reverse, or it may
3687 be scanned forwards but computing a result ``as if'' it were scanned
3688 backwards. (Some functions, like @code{mapcar*} and @code{every},
3689 @emph{do} specify exactly the order in which the function is called
3690 so side effects are perfectly acceptable in those cases.)
3691
3692 Strings may contain ``text properties'' as well
3693 as character data. Except as noted, it is undefined whether or
3694 not text properties are preserved by sequence functions. For
3695 example, @code{(remove* ?A @var{str})} may or may not preserve
3696 the properties of the characters copied from @var{str} into the
3697 result.
3698
3699 @node Mapping over Sequences, Sequence Functions, Sequence Basics, Sequences
3700 @section Mapping over Sequences
3701
3702 @noindent
3703 These functions ``map'' the function you specify over the elements
3704 of lists or arrays. They are all variations on the theme of the
3705 built-in function @code{mapcar}.
3706
3707 @defun mapcar* function seq &rest more-seqs
3708 This function calls @var{function} on successive parallel sets of
3709 elements from its argument sequences. Given a single @var{seq}
3710 argument it is equivalent to @code{mapcar}; given @var{n} sequences,
3711 it calls the function with the first elements of each of the sequences
3712 as the @var{n} arguments to yield the first element of the result
3713 list, then with the second elements, and so on. The mapping stops as
3714 soon as the shortest sequence runs out. The argument sequences may
3715 be any mixture of lists, strings, and vectors; the return sequence
3716 is always a list.
3717
3718 Common Lisp's @code{mapcar} accepts multiple arguments but works
3719 only on lists; Emacs Lisp's @code{mapcar} accepts a single sequence
3720 argument. This package's @code{mapcar*} works as a compatible
3721 superset of both.
3722 @end defun
3723
3724 @defun map result-type function seq &rest more-seqs
3725 This function maps @var{function} over the argument sequences,
3726 just like @code{mapcar*}, but it returns a sequence of type
3727 @var{result-type} rather than a list. @var{result-type} must
3728 be one of the following symbols: @code{vector}, @code{string},
3729 @code{list} (in which case the effect is the same as for
3730 @code{mapcar*}), or @code{nil} (in which case the results are
3731 thrown away and @code{map} returns @code{nil}).
3732 @end defun
3733
3734 @defun maplist function list &rest more-lists
3735 This function calls @var{function} on each of its argument lists,
3736 then on the @code{cdr}s of those lists, and so on, until the
3737 shortest list runs out. The results are returned in the form
3738 of a list. Thus, @code{maplist} is like @code{mapcar*} except
3739 that it passes in the list pointers themselves rather than the
3740 @code{car}s of the advancing pointers.
3741 @end defun
3742
3743 @defun mapc function seq &rest more-seqs
3744 This function is like @code{mapcar*}, except that the values returned
3745 by @var{function} are ignored and thrown away rather than being
3746 collected into a list. The return value of @code{mapc} is @var{seq},
3747 the first sequence. This function is more general than the Emacs
3748 primitive @code{mapc}.
3749 @end defun
3750
3751 @defun mapl function list &rest more-lists
3752 This function is like @code{maplist}, except that it throws away
3753 the values returned by @var{function}.
3754 @end defun
3755
3756 @defun mapcan function seq &rest more-seqs
3757 This function is like @code{mapcar*}, except that it concatenates
3758 the return values (which must be lists) using @code{nconc},
3759 rather than simply collecting them into a list.
3760 @end defun
3761
3762 @defun mapcon function list &rest more-lists
3763 This function is like @code{maplist}, except that it concatenates
3764 the return values using @code{nconc}.
3765 @end defun
3766
3767 @defun some predicate seq &rest more-seqs
3768 This function calls @var{predicate} on each element of @var{seq}
3769 in turn; if @var{predicate} returns a non-@code{nil} value,
3770 @code{some} returns that value, otherwise it returns @code{nil}.
3771 Given several sequence arguments, it steps through the sequences
3772 in parallel until the shortest one runs out, just as in
3773 @code{mapcar*}. You can rely on the left-to-right order in which
3774 the elements are visited, and on the fact that mapping stops
3775 immediately as soon as @var{predicate} returns non-@code{nil}.
3776 @end defun
3777
3778 @defun every predicate seq &rest more-seqs
3779 This function calls @var{predicate} on each element of the sequence(s)
3780 in turn; it returns @code{nil} as soon as @var{predicate} returns
3781 @code{nil} for any element, or @code{t} if the predicate was true
3782 for all elements.
3783 @end defun
3784
3785 @defun notany predicate seq &rest more-seqs
3786 This function calls @var{predicate} on each element of the sequence(s)
3787 in turn; it returns @code{nil} as soon as @var{predicate} returns
3788 a non-@code{nil} value for any element, or @code{t} if the predicate
3789 was @code{nil} for all elements.
3790 @end defun
3791
3792 @defun notevery predicate seq &rest more-seqs
3793 This function calls @var{predicate} on each element of the sequence(s)
3794 in turn; it returns a non-@code{nil} value as soon as @var{predicate}
3795 returns @code{nil} for any element, or @code{t} if the predicate was
3796 true for all elements.
3797 @end defun
3798
3799 @defun reduce function seq @t{&key :from-end :start :end :initial-value :key}
3800 This function combines the elements of @var{seq} using an associative
3801 binary operation. Suppose @var{function} is @code{*} and @var{seq} is
3802 the list @code{(2 3 4 5)}. The first two elements of the list are
3803 combined with @code{(* 2 3) = 6}; this is combined with the next
3804 element, @code{(* 6 4) = 24}, and that is combined with the final
3805 element: @code{(* 24 5) = 120}. Note that the @code{*} function happens
3806 to be self-reducing, so that @code{(* 2 3 4 5)} has the same effect as
3807 an explicit call to @code{reduce}.
3808
3809 If @code{:from-end} is true, the reduction is right-associative instead
3810 of left-associative:
3811
3812 @example
3813 (reduce '- '(1 2 3 4))
3814 @equiv{} (- (- (- 1 2) 3) 4) @result{} -8
3815 (reduce '- '(1 2 3 4) :from-end t)
3816 @equiv{} (- 1 (- 2 (- 3 4))) @result{} -2
3817 @end example
3818
3819 If @code{:key} is specified, it is a function of one argument which
3820 is called on each of the sequence elements in turn.
3821
3822 If @code{:initial-value} is specified, it is effectively added to the
3823 front (or rear in the case of @code{:from-end}) of the sequence.
3824 The @code{:key} function is @emph{not} applied to the initial value.
3825
3826 If the sequence, including the initial value, has exactly one element
3827 then that element is returned without ever calling @var{function}.
3828 If the sequence is empty (and there is no initial value), then
3829 @var{function} is called with no arguments to obtain the return value.
3830 @end defun
3831
3832 All of these mapping operations can be expressed conveniently in
3833 terms of the @code{loop} macro. In compiled code, @code{loop} will
3834 be faster since it generates the loop as in-line code with no
3835 function calls.
3836
3837 @node Sequence Functions, Searching Sequences, Mapping over Sequences, Sequences
3838 @section Sequence Functions
3839
3840 @noindent
3841 This section describes a number of Common Lisp functions for
3842 operating on sequences.
3843
3844 @defun subseq sequence start &optional end
3845 This function returns a given subsequence of the argument
3846 @var{sequence}, which may be a list, string, or vector.
3847 The indices @var{start} and @var{end} must be in range, and
3848 @var{start} must be no greater than @var{end}. If @var{end}
3849 is omitted, it defaults to the length of the sequence. The
3850 return value is always a copy; it does not share structure
3851 with @var{sequence}.
3852
3853 As an extension to Common Lisp, @var{start} and/or @var{end}
3854 may be negative, in which case they represent a distance back
3855 from the end of the sequence. This is for compatibility with
3856 Emacs' @code{substring} function. Note that @code{subseq} is
3857 the @emph{only} sequence function that allows negative
3858 @var{start} and @var{end}.
3859
3860 You can use @code{setf} on a @code{subseq} form to replace a
3861 specified range of elements with elements from another sequence.
3862 The replacement is done as if by @code{replace}, described below.
3863 @end defun
3864
3865 @defun concatenate result-type &rest seqs
3866 This function concatenates the argument sequences together to
3867 form a result sequence of type @var{result-type}, one of the
3868 symbols @code{vector}, @code{string}, or @code{list}. The
3869 arguments are always copied, even in cases such as
3870 @code{(concatenate 'list '(1 2 3))} where the result is
3871 identical to an argument.
3872 @end defun
3873
3874 @defun fill seq item @t{&key :start :end}
3875 This function fills the elements of the sequence (or the specified
3876 part of the sequence) with the value @var{item}.
3877 @end defun
3878
3879 @defun replace seq1 seq2 @t{&key :start1 :end1 :start2 :end2}
3880 This function copies part of @var{seq2} into part of @var{seq1}.
3881 The sequence @var{seq1} is not stretched or resized; the amount
3882 of data copied is simply the shorter of the source and destination
3883 (sub)sequences. The function returns @var{seq1}.
3884
3885 If @var{seq1} and @var{seq2} are @code{eq}, then the replacement
3886 will work correctly even if the regions indicated by the start
3887 and end arguments overlap. However, if @var{seq1} and @var{seq2}
3888 are lists which share storage but are not @code{eq}, and the
3889 start and end arguments specify overlapping regions, the effect
3890 is undefined.
3891 @end defun
3892
3893 @defun remove* item seq @t{&key :test :test-not :key :count :start :end :from-end}
3894 This returns a copy of @var{seq} with all elements matching
3895 @var{item} removed. The result may share storage with or be
3896 @code{eq} to @var{seq} in some circumstances, but the original
3897 @var{seq} will not be modified. The @code{:test}, @code{:test-not},
3898 and @code{:key} arguments define the matching test that is used;
3899 by default, elements @code{eql} to @var{item} are removed. The
3900 @code{:count} argument specifies the maximum number of matching
3901 elements that can be removed (only the leftmost @var{count} matches
3902 are removed). The @code{:start} and @code{:end} arguments specify
3903 a region in @var{seq} in which elements will be removed; elements
3904 outside that region are not matched or removed. The @code{:from-end}
3905 argument, if true, says that elements should be deleted from the
3906 end of the sequence rather than the beginning (this matters only
3907 if @var{count} was also specified).
3908 @end defun
3909
3910 @defun delete* item seq @t{&key :test :test-not :key :count :start :end :from-end}
3911 This deletes all elements of @var{seq} which match @var{item}.
3912 It is a destructive operation. Since Emacs Lisp does not support
3913 stretchable strings or vectors, this is the same as @code{remove*}
3914 for those sequence types. On lists, @code{remove*} will copy the
3915 list if necessary to preserve the original list, whereas
3916 @code{delete*} will splice out parts of the argument list.
3917 Compare @code{append} and @code{nconc}, which are analogous
3918 non-destructive and destructive list operations in Emacs Lisp.
3919 @end defun
3920
3921 @findex remove-if
3922 @findex remove-if-not
3923 @findex delete-if
3924 @findex delete-if-not
3925 The predicate-oriented functions @code{remove-if}, @code{remove-if-not},
3926 @code{delete-if}, and @code{delete-if-not} are defined similarly.
3927
3928 @defun remove-duplicates seq @t{&key :test :test-not :key :start :end :from-end}
3929 This function returns a copy of @var{seq} with duplicate elements
3930 removed. Specifically, if two elements from the sequence match
3931 according to the @code{:test}, @code{:test-not}, and @code{:key}
3932 arguments, only the rightmost one is retained. If @code{:from-end}
3933 is true, the leftmost one is retained instead. If @code{:start} or
3934 @code{:end} is specified, only elements within that subsequence are
3935 examined or removed.
3936 @end defun
3937
3938 @defun delete-duplicates seq @t{&key :test :test-not :key :start :end :from-end}
3939 This function deletes duplicate elements from @var{seq}. It is
3940 a destructive version of @code{remove-duplicates}.
3941 @end defun
3942
3943 @defun substitute new old seq @t{&key :test :test-not :key :count :start :end :from-end}
3944 This function returns a copy of @var{seq}, with all elements
3945 matching @var{old} replaced with @var{new}. The @code{:count},
3946 @code{:start}, @code{:end}, and @code{:from-end} arguments may be
3947 used to limit the number of substitutions made.
3948 @end defun
3949
3950 @defun nsubstitute new old seq @t{&key :test :test-not :key :count :start :end :from-end}
3951 This is a destructive version of @code{substitute}; it performs
3952 the substitution using @code{setcar} or @code{aset} rather than
3953 by returning a changed copy of the sequence.
3954 @end defun
3955
3956 @findex substitute-if
3957 @findex substitute-if-not
3958 @findex nsubstitute-if
3959 @findex nsubstitute-if-not
3960 The @code{substitute-if}, @code{substitute-if-not}, @code{nsubstitute-if},
3961 and @code{nsubstitute-if-not} functions are defined similarly. For
3962 these, a @var{predicate} is given in place of the @var{old} argument.
3963
3964 @node Searching Sequences, Sorting Sequences, Sequence Functions, Sequences
3965 @section Searching Sequences
3966
3967 @noindent
3968 These functions search for elements or subsequences in a sequence.
3969 (See also @code{member*} and @code{assoc*}; @pxref{Lists}.)
3970
3971 @defun find item seq @t{&key :test :test-not :key :start :end :from-end}
3972 This function searches @var{seq} for an element matching @var{item}.
3973 If it finds a match, it returns the matching element. Otherwise,
3974 it returns @code{nil}. It returns the leftmost match, unless
3975 @code{:from-end} is true, in which case it returns the rightmost
3976 match. The @code{:start} and @code{:end} arguments may be used to
3977 limit the range of elements that are searched.
3978 @end defun
3979
3980 @defun position item seq @t{&key :test :test-not :key :start :end :from-end}
3981 This function is like @code{find}, except that it returns the
3982 integer position in the sequence of the matching item rather than
3983 the item itself. The position is relative to the start of the
3984 sequence as a whole, even if @code{:start} is non-zero. The function
3985 returns @code{nil} if no matching element was found.
3986 @end defun
3987
3988 @defun count item seq @t{&key :test :test-not :key :start :end}
3989 This function returns the number of elements of @var{seq} which
3990 match @var{item}. The result is always a nonnegative integer.
3991 @end defun
3992
3993 @findex find-if
3994 @findex find-if-not
3995 @findex position-if
3996 @findex position-if-not
3997 @findex count-if
3998 @findex count-if-not
3999 The @code{find-if}, @code{find-if-not}, @code{position-if},
4000 @code{position-if-not}, @code{count-if}, and @code{count-if-not}
4001 functions are defined similarly.
4002
4003 @defun mismatch seq1 seq2 @t{&key :test :test-not :key :start1 :end1 :start2 :end2 :from-end}
4004 This function compares the specified parts of @var{seq1} and
4005 @var{seq2}. If they are the same length and the corresponding
4006 elements match (according to @code{:test}, @code{:test-not},
4007 and @code{:key}), the function returns @code{nil}. If there is
4008 a mismatch, the function returns the index (relative to @var{seq1})
4009 of the first mismatching element. This will be the leftmost pair of
4010 elements which do not match, or the position at which the shorter of
4011 the two otherwise-matching sequences runs out.
4012
4013 If @code{:from-end} is true, then the elements are compared from right
4014 to left starting at @code{(1- @var{end1})} and @code{(1- @var{end2})}.
4015 If the sequences differ, then one plus the index of the rightmost
4016 difference (relative to @var{seq1}) is returned.
4017
4018 An interesting example is @code{(mismatch str1 str2 :key 'upcase)},
4019 which compares two strings case-insensitively.
4020 @end defun
4021
4022 @defun search seq1 seq2 @t{&key :test :test-not :key :from-end :start1 :end1 :start2 :end2}
4023 This function searches @var{seq2} for a subsequence that matches
4024 @var{seq1} (or part of it specified by @code{:start1} and
4025 @code{:end1}.) Only matches which fall entirely within the region
4026 defined by @code{:start2} and @code{:end2} will be considered.
4027 The return value is the index of the leftmost element of the
4028 leftmost match, relative to the start of @var{seq2}, or @code{nil}
4029 if no matches were found. If @code{:from-end} is true, the
4030 function finds the @emph{rightmost} matching subsequence.
4031 @end defun
4032
4033 @node Sorting Sequences, , Searching Sequences, Sequences
4034 @section Sorting Sequences
4035
4036 @defun sort* seq predicate @t{&key :key}
4037 This function sorts @var{seq} into increasing order as determined
4038 by using @var{predicate} to compare pairs of elements. @var{predicate}
4039 should return true (non-@code{nil}) if and only if its first argument
4040 is less than (not equal to) its second argument. For example,
4041 @code{<} and @code{string-lessp} are suitable predicate functions
4042 for sorting numbers and strings, respectively; @code{>} would sort
4043 numbers into decreasing rather than increasing order.
4044
4045 This function differs from Emacs' built-in @code{sort} in that it
4046 can operate on any type of sequence, not just lists. Also, it
4047 accepts a @code{:key} argument which is used to preprocess data
4048 fed to the @var{predicate} function. For example,
4049
4050 @example
4051 (setq data (sort* data 'string-lessp :key 'downcase))
4052 @end example
4053
4054 @noindent
4055 sorts @var{data}, a sequence of strings, into increasing alphabetical
4056 order without regard to case. A @code{:key} function of @code{car}
4057 would be useful for sorting association lists. It should only be a
4058 simple accessor though, it's used heavily in the current
4059 implementation.
4060
4061 The @code{sort*} function is destructive; it sorts lists by actually
4062 rearranging the @code{cdr} pointers in suitable fashion.
4063 @end defun
4064
4065 @defun stable-sort seq predicate @t{&key :key}
4066 This function sorts @var{seq} @dfn{stably}, meaning two elements
4067 which are equal in terms of @var{predicate} are guaranteed not to
4068 be rearranged out of their original order by the sort.
4069
4070 In practice, @code{sort*} and @code{stable-sort} are equivalent
4071 in Emacs Lisp because the underlying @code{sort} function is
4072 stable by default. However, this package reserves the right to
4073 use non-stable methods for @code{sort*} in the future.
4074 @end defun
4075
4076 @defun merge type seq1 seq2 predicate @t{&key :key}
4077 This function merges two sequences @var{seq1} and @var{seq2} by
4078 interleaving their elements. The result sequence, of type @var{type}
4079 (in the sense of @code{concatenate}), has length equal to the sum
4080 of the lengths of the two input sequences. The sequences may be
4081 modified destructively. Order of elements within @var{seq1} and
4082 @var{seq2} is preserved in the interleaving; elements of the two
4083 sequences are compared by @var{predicate} (in the sense of
4084 @code{sort}) and the lesser element goes first in the result.
4085 When elements are equal, those from @var{seq1} precede those from
4086 @var{seq2} in the result. Thus, if @var{seq1} and @var{seq2} are
4087 both sorted according to @var{predicate}, then the result will be
4088 a merged sequence which is (stably) sorted according to
4089 @var{predicate}.
4090 @end defun
4091
4092 @node Lists, Structures, Sequences, Top
4093 @chapter Lists
4094
4095 @noindent
4096 The functions described here operate on lists.
4097
4098 @menu
4099 * List Functions:: `caddr', `first', `list*', etc.
4100 * Substitution of Expressions:: `subst', `sublis', etc.
4101 * Lists as Sets:: `member*', `adjoin', `union', etc.
4102 * Association Lists:: `assoc*', `rassoc*', `acons', `pairlis'
4103 @end menu
4104
4105 @node List Functions, Substitution of Expressions, Lists, Lists
4106 @section List Functions
4107
4108 @noindent
4109 This section describes a number of simple operations on lists,
4110 i.e., chains of cons cells.
4111
4112 @defun caddr x
4113 This function is equivalent to @code{(car (cdr (cdr @var{x})))}.
4114 Likewise, this package defines all 28 @code{c@var{xxx}r} functions
4115 where @var{xxx} is up to four @samp{a}s and/or @samp{d}s.
4116 All of these functions are @code{setf}-able, and calls to them
4117 are expanded inline by the byte-compiler for maximum efficiency.
4118 @end defun
4119
4120 @defun first x
4121 This function is a synonym for @code{(car @var{x})}. Likewise,
4122 the functions @code{second}, @code{third}, @dots{}, through
4123 @code{tenth} return the given element of the list @var{x}.
4124 @end defun
4125
4126 @defun rest x
4127 This function is a synonym for @code{(cdr @var{x})}.
4128 @end defun
4129
4130 @defun endp x
4131 Common Lisp defines this function to act like @code{null}, but
4132 signaling an error if @code{x} is neither a @code{nil} nor a
4133 cons cell. This package simply defines @code{endp} as a synonym
4134 for @code{null}.
4135 @end defun
4136
4137 @defun list-length x
4138 This function returns the length of list @var{x}, exactly like
4139 @code{(length @var{x})}, except that if @var{x} is a circular
4140 list (where the cdr-chain forms a loop rather than terminating
4141 with @code{nil}), this function returns @code{nil}. (The regular
4142 @code{length} function would get stuck if given a circular list.)
4143 @end defun
4144
4145 @defun list* arg &rest others
4146 This function constructs a list of its arguments. The final
4147 argument becomes the @code{cdr} of the last cell constructed.
4148 Thus, @code{(list* @var{a} @var{b} @var{c})} is equivalent to
4149 @code{(cons @var{a} (cons @var{b} @var{c}))}, and
4150 @code{(list* @var{a} @var{b} nil)} is equivalent to
4151 @code{(list @var{a} @var{b})}.
4152
4153 (Note that this function really is called @code{list*} in Common
4154 Lisp; it is not a name invented for this package like @code{member*}
4155 or @code{defun*}.)
4156 @end defun
4157
4158 @defun ldiff list sublist
4159 If @var{sublist} is a sublist of @var{list}, i.e., is @code{eq} to
4160 one of the cons cells of @var{list}, then this function returns
4161 a copy of the part of @var{list} up to but not including
4162 @var{sublist}. For example, @code{(ldiff x (cddr x))} returns
4163 the first two elements of the list @code{x}. The result is a
4164 copy; the original @var{list} is not modified. If @var{sublist}
4165 is not a sublist of @var{list}, a copy of the entire @var{list}
4166 is returned.
4167 @end defun
4168
4169 @defun copy-list list
4170 This function returns a copy of the list @var{list}. It copies
4171 dotted lists like @code{(1 2 . 3)} correctly.
4172 @end defun
4173
4174 @defun copy-tree x &optional vecp
4175 This function returns a copy of the tree of cons cells @var{x}.
4176 Unlike @code{copy-sequence} (and its alias @code{copy-list}),
4177 which copies only along the @code{cdr} direction, this function
4178 copies (recursively) along both the @code{car} and the @code{cdr}
4179 directions. If @var{x} is not a cons cell, the function simply
4180 returns @var{x} unchanged. If the optional @var{vecp} argument
4181 is true, this function copies vectors (recursively) as well as
4182 cons cells.
4183 @end defun
4184
4185 @defun tree-equal x y @t{&key :test :test-not :key}
4186 This function compares two trees of cons cells. If @var{x} and
4187 @var{y} are both cons cells, their @code{car}s and @code{cdr}s are
4188 compared recursively. If neither @var{x} nor @var{y} is a cons
4189 cell, they are compared by @code{eql}, or according to the
4190 specified test. The @code{:key} function, if specified, is
4191 applied to the elements of both trees. @xref{Sequences}.
4192 @end defun
4193
4194 @iftex
4195 @secno=3
4196 @end iftex
4197
4198 @node Substitution of Expressions, Lists as Sets, List Functions, Lists
4199 @section Substitution of Expressions
4200
4201 @noindent
4202 These functions substitute elements throughout a tree of cons
4203 cells. (@xref{Sequence Functions}, for the @code{substitute}
4204 function, which works on just the top-level elements of a list.)
4205
4206 @defun subst new old tree @t{&key :test :test-not :key}
4207 This function substitutes occurrences of @var{old} with @var{new}
4208 in @var{tree}, a tree of cons cells. It returns a substituted
4209 tree, which will be a copy except that it may share storage with
4210 the argument @var{tree} in parts where no substitutions occurred.
4211 The original @var{tree} is not modified. This function recurses
4212 on, and compares against @var{old}, both @code{car}s and @code{cdr}s
4213 of the component cons cells. If @var{old} is itself a cons cell,
4214 then matching cells in the tree are substituted as usual without
4215 recursively substituting in that cell. Comparisons with @var{old}
4216 are done according to the specified test (@code{eql} by default).
4217 The @code{:key} function is applied to the elements of the tree
4218 but not to @var{old}.
4219 @end defun
4220
4221 @defun nsubst new old tree @t{&key :test :test-not :key}
4222 This function is like @code{subst}, except that it works by
4223 destructive modification (by @code{setcar} or @code{setcdr})
4224 rather than copying.
4225 @end defun
4226
4227 @findex subst-if
4228 @findex subst-if-not
4229 @findex nsubst-if
4230 @findex nsubst-if-not
4231 The @code{subst-if}, @code{subst-if-not}, @code{nsubst-if}, and
4232 @code{nsubst-if-not} functions are defined similarly.
4233
4234 @defun sublis alist tree @t{&key :test :test-not :key}
4235 This function is like @code{subst}, except that it takes an
4236 association list @var{alist} of @var{old}-@var{new} pairs.
4237 Each element of the tree (after applying the @code{:key}
4238 function, if any), is compared with the @code{car}s of
4239 @var{alist}; if it matches, it is replaced by the corresponding
4240 @code{cdr}.
4241 @end defun
4242
4243 @defun nsublis alist tree @t{&key :test :test-not :key}
4244 This is a destructive version of @code{sublis}.
4245 @end defun
4246
4247 @node Lists as Sets, Association Lists, Substitution of Expressions, Lists
4248 @section Lists as Sets
4249
4250 @noindent
4251 These functions perform operations on lists which represent sets
4252 of elements.
4253
4254 @defun member* item list @t{&key :test :test-not :key}
4255 This function searches @var{list} for an element matching @var{item}.
4256 If a match is found, it returns the cons cell whose @code{car} was
4257 the matching element. Otherwise, it returns @code{nil}. Elements
4258 are compared by @code{eql} by default; you can use the @code{:test},
4259 @code{:test-not}, and @code{:key} arguments to modify this behavior.
4260 @xref{Sequences}.
4261
4262 Note that this function's name is suffixed by @samp{*} to avoid
4263 the incompatible @code{member} function defined in Emacs.
4264 (That function uses @code{equal} for comparisons; it is equivalent
4265 to @code{(member* @var{item} @var{list} :test 'equal)}.)
4266 @end defun
4267
4268 @findex member-if
4269 @findex member-if-not
4270 The @code{member-if} and @code{member-if-not} functions
4271 analogously search for elements which satisfy a given predicate.
4272
4273 @defun tailp sublist list
4274 This function returns @code{t} if @var{sublist} is a sublist of
4275 @var{list}, i.e., if @var{sublist} is @code{eql} to @var{list} or to
4276 any of its @code{cdr}s.
4277 @end defun
4278
4279 @defun adjoin item list @t{&key :test :test-not :key}
4280 This function conses @var{item} onto the front of @var{list},
4281 like @code{(cons @var{item} @var{list})}, but only if @var{item}
4282 is not already present on the list (as determined by @code{member*}).
4283 If a @code{:key} argument is specified, it is applied to
4284 @var{item} as well as to the elements of @var{list} during
4285 the search, on the reasoning that @var{item} is ``about'' to
4286 become part of the list.
4287 @end defun
4288
4289 @defun union list1 list2 @t{&key :test :test-not :key}
4290 This function combines two lists which represent sets of items,
4291 returning a list that represents the union of those two sets.
4292 The result list will contain all items which appear in @var{list1}
4293 or @var{list2}, and no others. If an item appears in both
4294 @var{list1} and @var{list2} it will be copied only once. If
4295 an item is duplicated in @var{list1} or @var{list2}, it is
4296 undefined whether or not that duplication will survive in the
4297 result list. The order of elements in the result list is also
4298 undefined.
4299 @end defun
4300
4301 @defun nunion list1 list2 @t{&key :test :test-not :key}
4302 This is a destructive version of @code{union}; rather than copying,
4303 it tries to reuse the storage of the argument lists if possible.
4304 @end defun
4305
4306 @defun intersection list1 list2 @t{&key :test :test-not :key}
4307 This function computes the intersection of the sets represented
4308 by @var{list1} and @var{list2}. It returns the list of items
4309 which appear in both @var{list1} and @var{list2}.
4310 @end defun
4311
4312 @defun nintersection list1 list2 @t{&key :test :test-not :key}
4313 This is a destructive version of @code{intersection}. It
4314 tries to reuse storage of @var{list1} rather than copying.
4315 It does @emph{not} reuse the storage of @var{list2}.
4316 @end defun
4317
4318 @defun set-difference list1 list2 @t{&key :test :test-not :key}
4319 This function computes the ``set difference'' of @var{list1}
4320 and @var{list2}, i.e., the set of elements that appear in
4321 @var{list1} but @emph{not} in @var{list2}.
4322 @end defun
4323
4324 @defun nset-difference list1 list2 @t{&key :test :test-not :key}
4325 This is a destructive @code{set-difference}, which will try
4326 to reuse @var{list1} if possible.
4327 @end defun
4328
4329 @defun set-exclusive-or list1 list2 @t{&key :test :test-not :key}
4330 This function computes the ``set exclusive or'' of @var{list1}
4331 and @var{list2}, i.e., the set of elements that appear in
4332 exactly one of @var{list1} and @var{list2}.
4333 @end defun
4334
4335 @defun nset-exclusive-or list1 list2 @t{&key :test :test-not :key}
4336 This is a destructive @code{set-exclusive-or}, which will try
4337 to reuse @var{list1} and @var{list2} if possible.
4338 @end defun
4339
4340 @defun subsetp list1 list2 @t{&key :test :test-not :key}
4341 This function checks whether @var{list1} represents a subset
4342 of @var{list2}, i.e., whether every element of @var{list1}
4343 also appears in @var{list2}.
4344 @end defun
4345
4346 @node Association Lists, , Lists as Sets, Lists
4347 @section Association Lists
4348
4349 @noindent
4350 An @dfn{association list} is a list representing a mapping from
4351 one set of values to another; any list whose elements are cons
4352 cells is an association list.
4353
4354 @defun assoc* item a-list @t{&key :test :test-not :key}
4355 This function searches the association list @var{a-list} for an
4356 element whose @code{car} matches (in the sense of @code{:test},
4357 @code{:test-not}, and @code{:key}, or by comparison with @code{eql})
4358 a given @var{item}. It returns the matching element, if any,
4359 otherwise @code{nil}. It ignores elements of @var{a-list} which
4360 are not cons cells. (This corresponds to the behavior of
4361 @code{assq} and @code{assoc} in Emacs Lisp; Common Lisp's
4362 @code{assoc} ignores @code{nil}s but considers any other non-cons
4363 elements of @var{a-list} to be an error.)
4364 @end defun
4365
4366 @defun rassoc* item a-list @t{&key :test :test-not :key}
4367 This function searches for an element whose @code{cdr} matches
4368 @var{item}. If @var{a-list} represents a mapping, this applies
4369 the inverse of the mapping to @var{item}.
4370 @end defun
4371
4372 @findex assoc-if
4373 @findex assoc-if-not
4374 @findex rassoc-if
4375 @findex rassoc-if-not
4376 The @code{assoc-if}, @code{assoc-if-not}, @code{rassoc-if},
4377 and @code{rassoc-if-not} functions are defined similarly.
4378
4379 Two simple functions for constructing association lists are:
4380
4381 @defun acons key value alist
4382 This is equivalent to @code{(cons (cons @var{key} @var{value}) @var{alist})}.
4383 @end defun
4384
4385 @defun pairlis keys values &optional alist
4386 This is equivalent to @code{(nconc (mapcar* 'cons @var{keys} @var{values})
4387 @var{alist})}.
4388 @end defun
4389
4390 @iftex
4391 @chapno=18
4392 @end iftex
4393
4394 @node Structures, Assertions, Lists, Top
4395 @chapter Structures
4396
4397 @noindent
4398 The Common Lisp @dfn{structure} mechanism provides a general way
4399 to define data types similar to C's @code{struct} types. A
4400 structure is a Lisp object containing some number of @dfn{slots},
4401 each of which can hold any Lisp data object. Functions are
4402 provided for accessing and setting the slots, creating or copying
4403 structure objects, and recognizing objects of a particular structure
4404 type.
4405
4406 In true Common Lisp, each structure type is a new type distinct
4407 from all existing Lisp types. Since the underlying Emacs Lisp
4408 system provides no way to create new distinct types, this package
4409 implements structures as vectors (or lists upon request) with a
4410 special ``tag'' symbol to identify them.
4411
4412 @defspec defstruct name slots@dots{}
4413 The @code{defstruct} form defines a new structure type called
4414 @var{name}, with the specified @var{slots}. (The @var{slots}
4415 may begin with a string which documents the structure type.)
4416 In the simplest case, @var{name} and each of the @var{slots}
4417 are symbols. For example,
4418
4419 @example
4420 (defstruct person name age sex)
4421 @end example
4422
4423 @noindent
4424 defines a struct type called @code{person} which contains three
4425 slots. Given a @code{person} object @var{p}, you can access those
4426 slots by calling @code{(person-name @var{p})}, @code{(person-age @var{p})},
4427 and @code{(person-sex @var{p})}. You can also change these slots by
4428 using @code{setf} on any of these place forms:
4429
4430 @example
4431 (incf (person-age birthday-boy))
4432 @end example
4433
4434 You can create a new @code{person} by calling @code{make-person},
4435 which takes keyword arguments @code{:name}, @code{:age}, and
4436 @code{:sex} to specify the initial values of these slots in the
4437 new object. (Omitting any of these arguments leaves the corresponding
4438 slot ``undefined,'' according to the Common Lisp standard; in Emacs
4439 Lisp, such uninitialized slots are filled with @code{nil}.)
4440
4441 Given a @code{person}, @code{(copy-person @var{p})} makes a new
4442 object of the same type whose slots are @code{eq} to those of @var{p}.
4443
4444 Given any Lisp object @var{x}, @code{(person-p @var{x})} returns
4445 true if @var{x} looks like a @code{person}, false otherwise. (Again,
4446 in Common Lisp this predicate would be exact; in Emacs Lisp the
4447 best it can do is verify that @var{x} is a vector of the correct
4448 length which starts with the correct tag symbol.)
4449
4450 Accessors like @code{person-name} normally check their arguments
4451 (effectively using @code{person-p}) and signal an error if the
4452 argument is the wrong type. This check is affected by
4453 @code{(optimize (safety @dots{}))} declarations. Safety level 1,
4454 the default, uses a somewhat optimized check that will detect all
4455 incorrect arguments, but may use an uninformative error message
4456 (e.g., ``expected a vector'' instead of ``expected a @code{person}'').
4457 Safety level 0 omits all checks except as provided by the underlying
4458 @code{aref} call; safety levels 2 and 3 do rigorous checking that will
4459 always print a descriptive error message for incorrect inputs.
4460 @xref{Declarations}.
4461
4462 @example
4463 (setq dave (make-person :name "Dave" :sex 'male))
4464 @result{} [cl-struct-person "Dave" nil male]
4465 (setq other (copy-person dave))
4466 @result{} [cl-struct-person "Dave" nil male]
4467 (eq dave other)
4468 @result{} nil
4469 (eq (person-name dave) (person-name other))
4470 @result{} t
4471 (person-p dave)
4472 @result{} t
4473 (person-p [1 2 3 4])
4474 @result{} nil
4475 (person-p "Bogus")
4476 @result{} nil
4477 (person-p '[cl-struct-person counterfeit person object])
4478 @result{} t
4479 @end example
4480
4481 In general, @var{name} is either a name symbol or a list of a name
4482 symbol followed by any number of @dfn{struct options}; each @var{slot}
4483 is either a slot symbol or a list of the form @samp{(@var{slot-name}
4484 @var{default-value} @var{slot-options}@dots{})}. The @var{default-value}
4485 is a Lisp form which is evaluated any time an instance of the
4486 structure type is created without specifying that slot's value.
4487
4488 Common Lisp defines several slot options, but the only one
4489 implemented in this package is @code{:read-only}. A non-@code{nil}
4490 value for this option means the slot should not be @code{setf}-able;
4491 the slot's value is determined when the object is created and does
4492 not change afterward.
4493
4494 @example
4495 (defstruct person
4496 (name nil :read-only t)
4497 age
4498 (sex 'unknown))
4499 @end example
4500
4501 Any slot options other than @code{:read-only} are ignored.
4502
4503 For obscure historical reasons, structure options take a different
4504 form than slot options. A structure option is either a keyword
4505 symbol, or a list beginning with a keyword symbol possibly followed
4506 by arguments. (By contrast, slot options are key-value pairs not
4507 enclosed in lists.)
4508
4509 @example
4510 (defstruct (person (:constructor create-person)
4511 (:type list)
4512 :named)
4513 name age sex)
4514 @end example
4515
4516 The following structure options are recognized.
4517
4518 @table @code
4519 @iftex
4520 @itemmax=0 in
4521 @advance@leftskip-.5@tableindent
4522 @end iftex
4523 @item :conc-name
4524 The argument is a symbol whose print name is used as the prefix for
4525 the names of slot accessor functions. The default is the name of
4526 the struct type followed by a hyphen. The option @code{(:conc-name p-)}
4527 would change this prefix to @code{p-}. Specifying @code{nil} as an
4528 argument means no prefix, so that the slot names themselves are used
4529 to name the accessor functions.
4530
4531 @item :constructor
4532 In the simple case, this option takes one argument which is an
4533 alternate name to use for the constructor function. The default
4534 is @code{make-@var{name}}, e.g., @code{make-person}. The above
4535 example changes this to @code{create-person}. Specifying @code{nil}
4536 as an argument means that no standard constructor should be
4537 generated at all.
4538
4539 In the full form of this option, the constructor name is followed
4540 by an arbitrary argument list. @xref{Program Structure}, for a
4541 description of the format of Common Lisp argument lists. All
4542 options, such as @code{&rest} and @code{&key}, are supported.
4543 The argument names should match the slot names; each slot is
4544 initialized from the corresponding argument. Slots whose names
4545 do not appear in the argument list are initialized based on the
4546 @var{default-value} in their slot descriptor. Also, @code{&optional}
4547 and @code{&key} arguments which don't specify defaults take their
4548 defaults from the slot descriptor. It is valid to include arguments
4549 which don't correspond to slot names; these are useful if they are
4550 referred to in the defaults for optional, keyword, or @code{&aux}
4551 arguments which @emph{do} correspond to slots.
4552
4553 You can specify any number of full-format @code{:constructor}
4554 options on a structure. The default constructor is still generated
4555 as well unless you disable it with a simple-format @code{:constructor}
4556 option.
4557
4558 @example
4559 (defstruct
4560 (person
4561 (:constructor nil) ; no default constructor
4562 (:constructor new-person (name sex &optional (age 0)))
4563 (:constructor new-hound (&key (name "Rover")
4564 (dog-years 0)
4565 &aux (age (* 7 dog-years))
4566 (sex 'canine))))
4567 name age sex)
4568 @end example
4569
4570 The first constructor here takes its arguments positionally rather
4571 than by keyword. (In official Common Lisp terminology, constructors
4572 that work By Order of Arguments instead of by keyword are called
4573 ``BOA constructors.'' No, I'm not making this up.) For example,
4574 @code{(new-person "Jane" 'female)} generates a person whose slots
4575 are @code{"Jane"}, 0, and @code{female}, respectively.
4576
4577 The second constructor takes two keyword arguments, @code{:name},
4578 which initializes the @code{name} slot and defaults to @code{"Rover"},
4579 and @code{:dog-years}, which does not itself correspond to a slot
4580 but which is used to initialize the @code{age} slot. The @code{sex}
4581 slot is forced to the symbol @code{canine} with no syntax for
4582 overriding it.
4583
4584 @item :copier
4585 The argument is an alternate name for the copier function for
4586 this type. The default is @code{copy-@var{name}}. @code{nil}
4587 means not to generate a copier function. (In this implementation,
4588 all copier functions are simply synonyms for @code{copy-sequence}.)
4589
4590 @item :predicate
4591 The argument is an alternate name for the predicate which recognizes
4592 objects of this type. The default is @code{@var{name}-p}. @code{nil}
4593 means not to generate a predicate function. (If the @code{:type}
4594 option is used without the @code{:named} option, no predicate is
4595 ever generated.)
4596
4597 In true Common Lisp, @code{typep} is always able to recognize a
4598 structure object even if @code{:predicate} was used. In this
4599 package, @code{typep} simply looks for a function called
4600 @code{@var{typename}-p}, so it will work for structure types
4601 only if they used the default predicate name.
4602
4603 @item :include
4604 This option implements a very limited form of C++-style inheritance.
4605 The argument is the name of another structure type previously
4606 created with @code{defstruct}. The effect is to cause the new
4607 structure type to inherit all of the included structure's slots
4608 (plus, of course, any new slots described by this struct's slot
4609 descriptors). The new structure is considered a ``specialization''
4610 of the included one. In fact, the predicate and slot accessors
4611 for the included type will also accept objects of the new type.
4612
4613 If there are extra arguments to the @code{:include} option after
4614 the included-structure name, these options are treated as replacement
4615 slot descriptors for slots in the included structure, possibly with
4616 modified default values. Borrowing an example from Steele:
4617
4618 @example
4619 (defstruct person name (age 0) sex)
4620 @result{} person
4621 (defstruct (astronaut (:include person (age 45)))
4622 helmet-size
4623 (favorite-beverage 'tang))
4624 @result{} astronaut
4625
4626 (setq joe (make-person :name "Joe"))
4627 @result{} [cl-struct-person "Joe" 0 nil]
4628 (setq buzz (make-astronaut :name "Buzz"))
4629 @result{} [cl-struct-astronaut "Buzz" 45 nil nil tang]
4630
4631 (list (person-p joe) (person-p buzz))
4632 @result{} (t t)
4633 (list (astronaut-p joe) (astronaut-p buzz))
4634 @result{} (nil t)
4635
4636 (person-name buzz)
4637 @result{} "Buzz"
4638 (astronaut-name joe)
4639 @result{} error: "astronaut-name accessing a non-astronaut"
4640 @end example
4641
4642 Thus, if @code{astronaut} is a specialization of @code{person},
4643 then every @code{astronaut} is also a @code{person} (but not the
4644 other way around). Every @code{astronaut} includes all the slots
4645 of a @code{person}, plus extra slots that are specific to
4646 astronauts. Operations that work on people (like @code{person-name})
4647 work on astronauts just like other people.
4648
4649 @item :print-function
4650 In full Common Lisp, this option allows you to specify a function
4651 which is called to print an instance of the structure type. The
4652 Emacs Lisp system offers no hooks into the Lisp printer which would
4653 allow for such a feature, so this package simply ignores
4654 @code{:print-function}.
4655
4656 @item :type
4657 The argument should be one of the symbols @code{vector} or @code{list}.
4658 This tells which underlying Lisp data type should be used to implement
4659 the new structure type. Vectors are used by default, but
4660 @code{(:type list)} will cause structure objects to be stored as
4661 lists instead.
4662
4663 The vector representation for structure objects has the advantage
4664 that all structure slots can be accessed quickly, although creating
4665 vectors is a bit slower in Emacs Lisp. Lists are easier to create,
4666 but take a relatively long time accessing the later slots.
4667
4668 @item :named
4669 This option, which takes no arguments, causes a characteristic ``tag''
4670 symbol to be stored at the front of the structure object. Using
4671 @code{:type} without also using @code{:named} will result in a
4672 structure type stored as plain vectors or lists with no identifying
4673 features.
4674
4675 The default, if you don't specify @code{:type} explicitly, is to
4676 use named vectors. Therefore, @code{:named} is only useful in
4677 conjunction with @code{:type}.
4678
4679 @example
4680 (defstruct (person1) name age sex)
4681 (defstruct (person2 (:type list) :named) name age sex)
4682 (defstruct (person3 (:type list)) name age sex)
4683
4684 (setq p1 (make-person1))
4685 @result{} [cl-struct-person1 nil nil nil]
4686 (setq p2 (make-person2))
4687 @result{} (person2 nil nil nil)
4688 (setq p3 (make-person3))
4689 @result{} (nil nil nil)
4690
4691 (person1-p p1)
4692 @result{} t
4693 (person2-p p2)
4694 @result{} t
4695 (person3-p p3)
4696 @result{} error: function person3-p undefined
4697 @end example
4698
4699 Since unnamed structures don't have tags, @code{defstruct} is not
4700 able to make a useful predicate for recognizing them. Also,
4701 accessors like @code{person3-name} will be generated but they
4702 will not be able to do any type checking. The @code{person3-name}
4703 function, for example, will simply be a synonym for @code{car} in
4704 this case. By contrast, @code{person2-name} is able to verify
4705 that its argument is indeed a @code{person2} object before
4706 proceeding.
4707
4708 @item :initial-offset
4709 The argument must be a nonnegative integer. It specifies a
4710 number of slots to be left ``empty'' at the front of the
4711 structure. If the structure is named, the tag appears at the
4712 specified position in the list or vector; otherwise, the first
4713 slot appears at that position. Earlier positions are filled
4714 with @code{nil} by the constructors and ignored otherwise. If
4715 the type @code{:include}s another type, then @code{:initial-offset}
4716 specifies a number of slots to be skipped between the last slot
4717 of the included type and the first new slot.
4718 @end table
4719 @end defspec
4720
4721 Except as noted, the @code{defstruct} facility of this package is
4722 entirely compatible with that of Common Lisp.
4723
4724 @iftex
4725 @chapno=23
4726 @end iftex
4727
4728 @node Assertions, Efficiency Concerns, Structures, Top
4729 @chapter Assertions and Errors
4730
4731 @noindent
4732 This section describes two macros that test @dfn{assertions}, i.e.,
4733 conditions which must be true if the program is operating correctly.
4734 Assertions never add to the behavior of a Lisp program; they simply
4735 make ``sanity checks'' to make sure everything is as it should be.
4736
4737 If the optimization property @code{speed} has been set to 3, and
4738 @code{safety} is less than 3, then the byte-compiler will optimize
4739 away the following assertions. Because assertions might be optimized
4740 away, it is a bad idea for them to include side-effects.
4741
4742 @defspec assert test-form [show-args string args@dots{}]
4743 This form verifies that @var{test-form} is true (i.e., evaluates to
4744 a non-@code{nil} value). If so, it returns @code{nil}. If the test
4745 is not satisfied, @code{assert} signals an error.
4746
4747 A default error message will be supplied which includes @var{test-form}.
4748 You can specify a different error message by including a @var{string}
4749 argument plus optional extra arguments. Those arguments are simply
4750 passed to @code{error} to signal the error.
4751
4752 If the optional second argument @var{show-args} is @code{t} instead
4753 of @code{nil}, then the error message (with or without @var{string})
4754 will also include all non-constant arguments of the top-level
4755 @var{form}. For example:
4756
4757 @example
4758 (assert (> x 10) t "x is too small: %d")
4759 @end example
4760
4761 This usage of @var{show-args} is an extension to Common Lisp. In
4762 true Common Lisp, the second argument gives a list of @var{places}
4763 which can be @code{setf}'d by the user before continuing from the
4764 error. Since Emacs Lisp does not support continuable errors, it
4765 makes no sense to specify @var{places}.
4766 @end defspec
4767
4768 @defspec check-type form type [string]
4769 This form verifies that @var{form} evaluates to a value of type
4770 @var{type}. If so, it returns @code{nil}. If not, @code{check-type}
4771 signals a @code{wrong-type-argument} error. The default error message
4772 lists the erroneous value along with @var{type} and @var{form}
4773 themselves. If @var{string} is specified, it is included in the
4774 error message in place of @var{type}. For example:
4775
4776 @example
4777 (check-type x (integer 1 *) "a positive integer")
4778 @end example
4779
4780 @xref{Type Predicates}, for a description of the type specifiers
4781 that may be used for @var{type}.
4782
4783 Note that in Common Lisp, the first argument to @code{check-type}
4784 must be a @var{place} suitable for use by @code{setf}, because
4785 @code{check-type} signals a continuable error that allows the
4786 user to modify @var{place}.
4787 @end defspec
4788
4789 The following error-related macro is also defined:
4790
4791 @defspec ignore-errors forms@dots{}
4792 This executes @var{forms} exactly like a @code{progn}, except that
4793 errors are ignored during the @var{forms}. More precisely, if
4794 an error is signaled then @code{ignore-errors} immediately
4795 aborts execution of the @var{forms} and returns @code{nil}.
4796 If the @var{forms} complete successfully, @code{ignore-errors}
4797 returns the result of the last @var{form}.
4798 @end defspec
4799
4800 @node Efficiency Concerns, Common Lisp Compatibility, Assertions, Top
4801 @appendix Efficiency Concerns
4802
4803 @appendixsec Macros
4804
4805 @noindent
4806 Many of the advanced features of this package, such as @code{defun*},
4807 @code{loop}, and @code{setf}, are implemented as Lisp macros. In
4808 byte-compiled code, these complex notations will be expanded into
4809 equivalent Lisp code which is simple and efficient. For example,
4810 the forms
4811
4812 @example
4813 (incf i n)
4814 (push x (car p))
4815 @end example
4816
4817 @noindent
4818 are expanded at compile-time to the Lisp forms
4819
4820 @example
4821 (setq i (+ i n))
4822 (setcar p (cons x (car p)))
4823 @end example
4824
4825 @noindent
4826 which are the most efficient ways of doing these respective operations
4827 in Lisp. Thus, there is no performance penalty for using the more
4828 readable @code{incf} and @code{push} forms in your compiled code.
4829
4830 @emph{Interpreted} code, on the other hand, must expand these macros
4831 every time they are executed. For this reason it is strongly
4832 recommended that code making heavy use of macros be compiled.
4833 (The features labeled ``Special Form'' instead of ``Function'' in
4834 this manual are macros.) A loop using @code{incf} a hundred times
4835 will execute considerably faster if compiled, and will also
4836 garbage-collect less because the macro expansion will not have
4837 to be generated, used, and thrown away a hundred times.
4838
4839 You can find out how a macro expands by using the
4840 @code{cl-prettyexpand} function.
4841
4842 @defun cl-prettyexpand form &optional full
4843 This function takes a single Lisp form as an argument and inserts
4844 a nicely formatted copy of it in the current buffer (which must be
4845 in Lisp mode so that indentation works properly). It also expands
4846 all Lisp macros which appear in the form. The easiest way to use
4847 this function is to go to the @code{*scratch*} buffer and type, say,
4848
4849 @example
4850 (cl-prettyexpand '(loop for x below 10 collect x))
4851 @end example
4852
4853 @noindent
4854 and type @kbd{C-x C-e} immediately after the closing parenthesis;
4855 the expansion
4856
4857 @example
4858 (block nil
4859 (let* ((x 0)
4860 (G1004 nil))
4861 (while (< x 10)
4862 (setq G1004 (cons x G1004))
4863 (setq x (+ x 1)))
4864 (nreverse G1004)))
4865 @end example
4866
4867 @noindent
4868 will be inserted into the buffer. (The @code{block} macro is
4869 expanded differently in the interpreter and compiler, so
4870 @code{cl-prettyexpand} just leaves it alone. The temporary
4871 variable @code{G1004} was created by @code{gensym}.)
4872
4873 If the optional argument @var{full} is true, then @emph{all}
4874 macros are expanded, including @code{block}, @code{eval-when},
4875 and compiler macros. Expansion is done as if @var{form} were
4876 a top-level form in a file being compiled. For example,
4877
4878 @example
4879 (cl-prettyexpand '(pushnew 'x list))
4880 @print{} (setq list (adjoin 'x list))
4881 (cl-prettyexpand '(pushnew 'x list) t)
4882 @print{} (setq list (if (memq 'x list) list (cons 'x list)))
4883 (cl-prettyexpand '(caddr (member* 'a list)) t)
4884 @print{} (car (cdr (cdr (memq 'a list))))
4885 @end example
4886
4887 Note that @code{adjoin}, @code{caddr}, and @code{member*} all
4888 have built-in compiler macros to optimize them in common cases.
4889 @end defun
4890
4891 @ifinfo
4892 @example
4893
4894 @end example
4895 @end ifinfo
4896 @appendixsec Error Checking
4897
4898 @noindent
4899 Common Lisp compliance has in general not been sacrificed for the
4900 sake of efficiency. A few exceptions have been made for cases
4901 where substantial gains were possible at the expense of marginal
4902 incompatibility.
4903
4904 The Common Lisp standard (as embodied in Steele's book) uses the
4905 phrase ``it is an error if'' to indicate a situation which is not
4906 supposed to arise in complying programs; implementations are strongly
4907 encouraged but not required to signal an error in these situations.
4908 This package sometimes omits such error checking in the interest of
4909 compactness and efficiency. For example, @code{do} variable
4910 specifiers are supposed to be lists of one, two, or three forms;
4911 extra forms are ignored by this package rather than signaling a
4912 syntax error. The @code{endp} function is simply a synonym for
4913 @code{null} in this package. Functions taking keyword arguments
4914 will accept an odd number of arguments, treating the trailing
4915 keyword as if it were followed by the value @code{nil}.
4916
4917 Argument lists (as processed by @code{defun*} and friends)
4918 @emph{are} checked rigorously except for the minor point just
4919 mentioned; in particular, keyword arguments are checked for
4920 validity, and @code{&allow-other-keys} and @code{:allow-other-keys}
4921 are fully implemented. Keyword validity checking is slightly
4922 time consuming (though not too bad in byte-compiled code);
4923 you can use @code{&allow-other-keys} to omit this check. Functions
4924 defined in this package such as @code{find} and @code{member*}
4925 do check their keyword arguments for validity.
4926
4927 @ifinfo
4928 @example
4929
4930 @end example
4931 @end ifinfo
4932 @appendixsec Optimizing Compiler
4933
4934 @noindent
4935 Use of the optimizing Emacs compiler is highly recommended; many of the Common
4936 Lisp macros emit
4937 code which can be improved by optimization. In particular,
4938 @code{block}s (whether explicit or implicit in constructs like
4939 @code{defun*} and @code{loop}) carry a fair run-time penalty; the
4940 optimizing compiler removes @code{block}s which are not actually
4941 referenced by @code{return} or @code{return-from} inside the block.
4942
4943 @node Common Lisp Compatibility, Old CL Compatibility, Efficiency Concerns, Top
4944 @appendix Common Lisp Compatibility
4945
4946 @noindent
4947 Following is a list of all known incompatibilities between this
4948 package and Common Lisp as documented in Steele (2nd edition).
4949
4950 Certain function names, such as @code{member}, @code{assoc}, and
4951 @code{floor}, were already taken by (incompatible) Emacs Lisp
4952 functions; this package appends @samp{*} to the names of its
4953 Common Lisp versions of these functions.
4954
4955 The word @code{defun*} is required instead of @code{defun} in order
4956 to use extended Common Lisp argument lists in a function. Likewise,
4957 @code{defmacro*} and @code{function*} are versions of those forms
4958 which understand full-featured argument lists. The @code{&whole}
4959 keyword does not work in @code{defmacro} argument lists (except
4960 inside recursive argument lists).
4961
4962 The @code{equal} predicate does not distinguish
4963 between IEEE floating-point plus and minus zero. The @code{equalp}
4964 predicate has several differences with Common Lisp; @pxref{Predicates}.
4965
4966 The @code{setf} mechanism is entirely compatible, except that
4967 setf-methods return a list of five values rather than five
4968 values directly. Also, the new ``@code{setf} function'' concept
4969 (typified by @code{(defun (setf foo) @dots{})}) is not implemented.
4970
4971 The @code{do-all-symbols} form is the same as @code{do-symbols}
4972 with no @var{obarray} argument. In Common Lisp, this form would
4973 iterate over all symbols in all packages. Since Emacs obarrays
4974 are not a first-class package mechanism, there is no way for
4975 @code{do-all-symbols} to locate any but the default obarray.
4976
4977 The @code{loop} macro is complete except that @code{loop-finish}
4978 and type specifiers are unimplemented.
4979
4980 The multiple-value return facility treats lists as multiple
4981 values, since Emacs Lisp cannot support multiple return values
4982 directly. The macros will be compatible with Common Lisp if
4983 @code{values} or @code{values-list} is always used to return to
4984 a @code{multiple-value-bind} or other multiple-value receiver;
4985 if @code{values} is used without @code{multiple-value-@dots{}}
4986 or vice-versa the effect will be different from Common Lisp.
4987
4988 Many Common Lisp declarations are ignored, and others match
4989 the Common Lisp standard in concept but not in detail. For
4990 example, local @code{special} declarations, which are purely
4991 advisory in Emacs Lisp, do not rigorously obey the scoping rules
4992 set down in Steele's book.
4993
4994 The variable @code{*gensym-counter*} starts out with a pseudo-random
4995 value rather than with zero. This is to cope with the fact that
4996 generated symbols become interned when they are written to and
4997 loaded back from a file.
4998
4999 The @code{defstruct} facility is compatible, except that structures
5000 are of type @code{:type vector :named} by default rather than some
5001 special, distinct type. Also, the @code{:type} slot option is ignored.
5002
5003 The second argument of @code{check-type} is treated differently.
5004
5005 @node Old CL Compatibility, Porting Common Lisp, Common Lisp Compatibility, Top
5006 @appendix Old CL Compatibility
5007
5008 @noindent
5009 Following is a list of all known incompatibilities between this package
5010 and the older Quiroz @file{cl.el} package.
5011
5012 This package's emulation of multiple return values in functions is
5013 incompatible with that of the older package. That package attempted
5014 to come as close as possible to true Common Lisp multiple return
5015 values; unfortunately, it could not be 100% reliable and so was prone
5016 to occasional surprises if used freely. This package uses a simpler
5017 method, namely replacing multiple values with lists of values, which
5018 is more predictable though more noticeably different from Common Lisp.
5019
5020 The @code{defkeyword} form and @code{keywordp} function are not
5021 implemented in this package.
5022
5023 The @code{member}, @code{floor}, @code{ceiling}, @code{truncate},
5024 @code{round}, @code{mod}, and @code{rem} functions are suffixed
5025 by @samp{*} in this package to avoid collision with existing
5026 functions in Emacs. The older package simply
5027 redefined these functions, overwriting the built-in meanings and
5028 causing serious portability problems. (Some more
5029 recent versions of the Quiroz package changed the names to
5030 @code{cl-member}, etc.; this package defines the latter names as
5031 aliases for @code{member*}, etc.)
5032
5033 Certain functions in the old package which were buggy or inconsistent
5034 with the Common Lisp standard are incompatible with the conforming
5035 versions in this package. For example, @code{eql} and @code{member}
5036 were synonyms for @code{eq} and @code{memq} in that package, @code{setf}
5037 failed to preserve correct order of evaluation of its arguments, etc.
5038
5039 Finally, unlike the older package, this package is careful to
5040 prefix all of its internal names with @code{cl-}. Except for a
5041 few functions which are explicitly defined as additional features
5042 (such as @code{floatp-safe} and @code{letf}), this package does not
5043 export any non-@samp{cl-} symbols which are not also part of Common
5044 Lisp.
5045
5046 @ifinfo
5047 @example
5048
5049 @end example
5050 @end ifinfo
5051 @appendixsec The @code{cl-compat} package
5052
5053 @noindent
5054 The @dfn{CL} package includes emulations of some features of the
5055 old @file{cl.el}, in the form of a compatibility package
5056 @code{cl-compat}. This file is obsolete and may be removed in future,
5057 so it should not be used in new code.
5058
5059 The old package defined a number of internal routines without
5060 @code{cl-} prefixes or other annotations. Call to these routines
5061 may have crept into existing Lisp code. @code{cl-compat}
5062 provides emulations of the following internal routines:
5063 @code{pair-with-newsyms}, @code{zip-lists}, @code{unzip-lists},
5064 @code{reassemble-arglists}, @code{duplicate-symbols-p},
5065 @code{safe-idiv}.
5066
5067 Some @code{setf} forms translated into calls to internal
5068 functions that user code might call directly. The functions
5069 @code{setnth}, @code{setnthcdr}, and @code{setelt} fall in
5070 this category; they are defined by @code{cl-compat}, but the
5071 best fix is to change to use @code{setf} properly.
5072
5073 The @code{cl-compat} file defines the keyword functions
5074 @code{keywordp}, @code{keyword-of}, and @code{defkeyword},
5075 which are not defined by the new @dfn{CL} package because the
5076 use of keywords as data is discouraged.
5077
5078 The @code{build-klist} mechanism for parsing keyword arguments
5079 is emulated by @code{cl-compat}; the @code{with-keyword-args}
5080 macro is not, however, and in any case it's best to change to
5081 use the more natural keyword argument processing offered by
5082 @code{defun*}.
5083
5084 Multiple return values are treated differently by the two
5085 Common Lisp packages. The old package's method was more
5086 compatible with true Common Lisp, though it used heuristics
5087 that caused it to report spurious multiple return values in
5088 certain cases. The @code{cl-compat} package defines a set
5089 of multiple-value macros that are compatible with the old
5090 CL package; again, they are heuristic in nature, but they
5091 are guaranteed to work in any case where the old package's
5092 macros worked. To avoid name collision with the ``official''
5093 multiple-value facilities, the ones in @code{cl-compat} have
5094 capitalized names: @code{Values}, @code{Values-list},
5095 @code{Multiple-value-bind}, etc.
5096
5097 The functions @code{cl-floor}, @code{cl-ceiling}, @code{cl-truncate},
5098 and @code{cl-round} are defined by @code{cl-compat} to use the
5099 old-style multiple-value mechanism, just as they did in the old
5100 package. The newer @code{floor*} and friends return their two
5101 results in a list rather than as multiple values. Note that
5102 older versions of the old package used the unadorned names
5103 @code{floor}, @code{ceiling}, etc.; @code{cl-compat} cannot use
5104 these names because they conflict with Emacs built-ins.
5105
5106 @node Porting Common Lisp, GNU Free Documentation License, Old CL Compatibility, Top
5107 @appendix Porting Common Lisp
5108
5109 @noindent
5110 This package is meant to be used as an extension to Emacs Lisp,
5111 not as an Emacs implementation of true Common Lisp. Some of the
5112 remaining differences between Emacs Lisp and Common Lisp make it
5113 difficult to port large Common Lisp applications to Emacs. For
5114 one, some of the features in this package are not fully compliant
5115 with ANSI or Steele; @pxref{Common Lisp Compatibility}. But there
5116 are also quite a few features that this package does not provide
5117 at all. Here are some major omissions that you will want to watch out
5118 for when bringing Common Lisp code into Emacs.
5119
5120 @itemize @bullet
5121 @item
5122 Case-insensitivity. Symbols in Common Lisp are case-insensitive
5123 by default. Some programs refer to a function or variable as
5124 @code{foo} in one place and @code{Foo} or @code{FOO} in another.
5125 Emacs Lisp will treat these as three distinct symbols.
5126
5127 Some Common Lisp code is written entirely in upper case. While Emacs
5128 is happy to let the program's own functions and variables use
5129 this convention, calls to Lisp builtins like @code{if} and
5130 @code{defun} will have to be changed to lower case.
5131
5132 @item
5133 Lexical scoping. In Common Lisp, function arguments and @code{let}
5134 bindings apply only to references physically within their bodies
5135 (or within macro expansions in their bodies). Emacs Lisp, by
5136 contrast, uses @dfn{dynamic scoping} wherein a binding to a
5137 variable is visible even inside functions called from the body.
5138
5139 Variables in Common Lisp can be made dynamically scoped by
5140 declaring them @code{special} or using @code{defvar}. In Emacs
5141 Lisp it is as if all variables were declared @code{special}.
5142
5143 Often you can use code that was written for lexical scoping
5144 even in a dynamically scoped Lisp, but not always. Here is
5145 an example of a Common Lisp code fragment that would fail in
5146 Emacs Lisp:
5147
5148 @example
5149 (defun map-odd-elements (func list)
5150 (loop for x in list
5151 for flag = t then (not flag)
5152 collect (if flag x (funcall func x))))
5153
5154 (defun add-odd-elements (list x)
5155 (map-odd-elements (lambda (a) (+ a x)) list))
5156 @end example
5157
5158 @noindent
5159 In Common Lisp, the two functions' usages of @code{x} are completely
5160 independent. In Emacs Lisp, the binding to @code{x} made by
5161 @code{add-odd-elements} will have been hidden by the binding
5162 in @code{map-odd-elements} by the time the @code{(+ a x)} function
5163 is called.
5164
5165 (This package avoids such problems in its own mapping functions
5166 by using names like @code{cl-x} instead of @code{x} internally;
5167 as long as you don't use the @code{cl-} prefix for your own
5168 variables no collision can occur.)
5169
5170 @xref{Lexical Bindings}, for a description of the @code{lexical-let}
5171 form which establishes a Common Lisp-style lexical binding, and some
5172 examples of how it differs from Emacs' regular @code{let}.
5173
5174 @item
5175 Reader macros. Common Lisp includes a second type of macro that
5176 works at the level of individual characters. For example, Common
5177 Lisp implements the quote notation by a reader macro called @code{'},
5178 whereas Emacs Lisp's parser just treats quote as a special case.
5179 Some Lisp packages use reader macros to create special syntaxes
5180 for themselves, which the Emacs parser is incapable of reading.
5181
5182 @item
5183 Other syntactic features. Common Lisp provides a number of
5184 notations beginning with @code{#} that the Emacs Lisp parser
5185 won't understand. For example, @samp{#| ... |#} is an
5186 alternate comment notation, and @samp{#+lucid (foo)} tells
5187 the parser to ignore the @code{(foo)} except in Lucid Common
5188 Lisp.
5189
5190 @item
5191 Packages. In Common Lisp, symbols are divided into @dfn{packages}.
5192 Symbols that are Lisp built-ins are typically stored in one package;
5193 symbols that are vendor extensions are put in another, and each
5194 application program would have a package for its own symbols.
5195 Certain symbols are ``exported'' by a package and others are
5196 internal; certain packages ``use'' or import the exported symbols
5197 of other packages. To access symbols that would not normally be
5198 visible due to this importing and exporting, Common Lisp provides
5199 a syntax like @code{package:symbol} or @code{package::symbol}.
5200
5201 Emacs Lisp has a single namespace for all interned symbols, and
5202 then uses a naming convention of putting a prefix like @code{cl-}
5203 in front of the name. Some Emacs packages adopt the Common Lisp-like
5204 convention of using @code{cl:} or @code{cl::} as the prefix.
5205 However, the Emacs parser does not understand colons and just
5206 treats them as part of the symbol name. Thus, while @code{mapcar}
5207 and @code{lisp:mapcar} may refer to the same symbol in Common
5208 Lisp, they are totally distinct in Emacs Lisp. Common Lisp
5209 programs which refer to a symbol by the full name sometimes
5210 and the short name other times will not port cleanly to Emacs.
5211
5212 Emacs Lisp does have a concept of ``obarrays,'' which are
5213 package-like collections of symbols, but this feature is not
5214 strong enough to be used as a true package mechanism.
5215
5216 @item
5217 The @code{format} function is quite different between Common
5218 Lisp and Emacs Lisp. It takes an additional ``destination''
5219 argument before the format string. A destination of @code{nil}
5220 means to format to a string as in Emacs Lisp; a destination
5221 of @code{t} means to write to the terminal (similar to
5222 @code{message} in Emacs). Also, format control strings are
5223 utterly different; @code{~} is used instead of @code{%} to
5224 introduce format codes, and the set of available codes is
5225 much richer. There are no notations like @code{\n} for
5226 string literals; instead, @code{format} is used with the
5227 ``newline'' format code, @code{~%}. More advanced formatting
5228 codes provide such features as paragraph filling, case
5229 conversion, and even loops and conditionals.
5230
5231 While it would have been possible to implement most of Common
5232 Lisp @code{format} in this package (under the name @code{format*},
5233 of course), it was not deemed worthwhile. It would have required
5234 a huge amount of code to implement even a decent subset of
5235 @code{format*}, yet the functionality it would provide over
5236 Emacs Lisp's @code{format} would rarely be useful.
5237
5238 @item
5239 Vector constants use square brackets in Emacs Lisp, but
5240 @code{#(a b c)} notation in Common Lisp. To further complicate
5241 matters, Emacs has its own @code{#(} notation for
5242 something entirely different---strings with properties.
5243
5244 @item
5245 Characters are distinct from integers in Common Lisp. The notation
5246 for character constants is also different: @code{#\A} in Common Lisp
5247 where Emacs Lisp uses @code{?A}. Also, @code{string=} and
5248 @code{string-equal} are synonyms in Emacs Lisp, whereas the latter is
5249 case-insensitive in Common Lisp.
5250
5251 @item
5252 Data types. Some Common Lisp data types do not exist in Emacs
5253 Lisp. Rational numbers and complex numbers are not present,
5254 nor are large integers (all integers are ``fixnums''). All
5255 arrays are one-dimensional. There are no readtables or pathnames;
5256 streams are a set of existing data types rather than a new data
5257 type of their own. Hash tables, random-states, structures, and
5258 packages (obarrays) are built from Lisp vectors or lists rather
5259 than being distinct types.
5260
5261 @item
5262 The Common Lisp Object System (CLOS) is not implemented,
5263 nor is the Common Lisp Condition System. However, the EIEIO package
5264 (@pxref{Top, , Introduction, eieio, EIEIO}) does implement some
5265 CLOS functionality.
5266
5267 @item
5268 Common Lisp features that are completely redundant with Emacs
5269 Lisp features of a different name generally have not been
5270 implemented. For example, Common Lisp writes @code{defconstant}
5271 where Emacs Lisp uses @code{defconst}. Similarly, @code{make-list}
5272 takes its arguments in different ways in the two Lisps but does
5273 exactly the same thing, so this package has not bothered to
5274 implement a Common Lisp-style @code{make-list}.
5275
5276 @item
5277 A few more notable Common Lisp features not included in this
5278 package: @code{compiler-let}, @code{tagbody}, @code{prog},
5279 @code{ldb/dpb}, @code{parse-integer}, @code{cerror}.
5280
5281 @item
5282 Recursion. While recursion works in Emacs Lisp just like it
5283 does in Common Lisp, various details of the Emacs Lisp system
5284 and compiler make recursion much less efficient than it is in
5285 most Lisps. Some schools of thought prefer to use recursion
5286 in Lisp over other techniques; they would sum a list of
5287 numbers using something like
5288
5289 @example
5290 (defun sum-list (list)
5291 (if list
5292 (+ (car list) (sum-list (cdr list)))
5293 0))
5294 @end example
5295
5296 @noindent
5297 where a more iteratively-minded programmer might write one of
5298 these forms:
5299
5300 @example
5301 (let ((total 0)) (dolist (x my-list) (incf total x)) total)
5302 (loop for x in my-list sum x)
5303 @end example
5304
5305 While this would be mainly a stylistic choice in most Common Lisps,
5306 in Emacs Lisp you should be aware that the iterative forms are
5307 much faster than recursion. Also, Lisp programmers will want to
5308 note that the current Emacs Lisp compiler does not optimize tail
5309 recursion.
5310 @end itemize
5311
5312 @node GNU Free Documentation License, Function Index, Porting Common Lisp, Top
5313 @appendix GNU Free Documentation License
5314 @include doclicense.texi
5315
5316 @node Function Index, Variable Index, GNU Free Documentation License, Top
5317 @unnumbered Function Index
5318
5319 @printindex fn
5320
5321 @node Variable Index, , Function Index, Top
5322 @unnumbered Variable Index
5323
5324 @printindex vr
5325
5326 @bye
5327