This commit was generated by cvs2svn to compensate for changes in r5670,
[chise/xemacs-chise.git.1] / info / cl.info-1
1 This is Info file ../info/cl.info, produced by Makeinfo version 1.68
2 from the input file cl.texi.
3
4 INFO-DIR-SECTION XEmacs Editor
5 START-INFO-DIR-ENTRY
6 * Common Lisp: (cl).            GNU Emacs Common Lisp emulation package.
7 END-INFO-DIR-ENTRY
8
9    This file documents the GNU Emacs Common Lisp emulation package.
10
11    Copyright (C) 1993 Free Software Foundation, Inc.
12
13    Permission is granted to make and distribute verbatim copies of this
14 manual provided the copyright notice and this permission notice are
15 preserved on all copies.
16
17    Permission is granted to copy and distribute modified versions of
18 this manual under the conditions for verbatim copying, provided also
19 that the section entitled "GNU General Public License" is included
20 exactly as in the original, and provided that the entire resulting
21 derived work is distributed under the terms of a permission notice
22 identical to this one.
23
24    Permission is granted to copy and distribute translations of this
25 manual into another language, under the above conditions for modified
26 versions, except that the section entitled "GNU General Public License"
27 may be included in a translation approved by the author instead of in
28 the original English.
29
30 \1f
31 File: cl.info,  Node: Top,  Next: Overview,  Up: (dir)
32
33 Common Lisp Extensions
34 **********************
35
36 This document describes a set of Emacs Lisp facilities borrowed from
37 Common Lisp.  All the facilities are described here in detail; for more
38 discussion and examples, Guy L. Steele's `Common Lisp, the Language',
39 second edition, is the definitive book on Common Lisp.  While this
40 document does not assume any prior knowledge of Common Lisp, it does
41 assume a basic familiarity with Emacs Lisp.
42
43 * Menu:
44
45 * Overview::             Installation, usage, etc.
46 * Program Structure::    Arglists, `eval-when', `defalias'
47 * Predicates::           `typep', `eql', and `equalp'
48 * Control Structure::    `setf', `when', `do', `loop', etc.
49 * Macros::               Destructuring, `define-compiler-macro'
50 * Declarations::         `proclaim', `declare', etc.
51 * Symbols::              Property lists, `gensym'
52 * Numbers::              Predicates, functions, random numbers
53 * Sequences::            Mapping, functions, searching, sorting
54 * Lists::                `cadr', `sublis', `member*', `assoc*', etc.
55 * Hash Tables::          `make-hash-table', `gethash', etc.
56 * Structures::           `defstruct'
57 * Assertions::           `check-type', `assert', `ignore-errors'.
58
59 * Efficiency Concerns::         Hints and techniques
60 * Common Lisp Compatibility::   All known differences with Steele
61 * Old CL Compatibility::        All known differences with old cl.el
62 * Porting Common Lisp::         Hints for porting Common Lisp code
63
64 * Function Index::
65 * Variable Index::
66
67 \1f
68 File: cl.info,  Node: Overview,  Next: Program Structure,  Prev: Top,  Up: Top
69
70 Overview
71 ********
72
73 Common Lisp is a huge language, and Common Lisp systems tend to be
74 massive and extremely complex.  Emacs Lisp, by contrast, is rather
75 minimalist in the choice of Lisp features it offers the programmer.  As
76 Emacs Lisp programmers have grown in number, and the applications they
77 write have grown more ambitious, it has become clear that Emacs Lisp
78 could benefit from many of the conveniences of Common Lisp.
79
80    The "CL" package adds a number of Common Lisp functions and control
81 structures to Emacs Lisp.  While not a 100% complete implementation of
82 Common Lisp, "CL" adds enough functionality to make Emacs Lisp
83 programming significantly more convenient.
84
85    Some Common Lisp features have been omitted from this package for
86 various reasons:
87
88    * Some features are too complex or bulky relative to their benefit
89      to Emacs Lisp programmers.  CLOS and Common Lisp streams are fine
90      examples of this group.
91
92    * Other features cannot be implemented without modification to the
93      Emacs Lisp interpreter itself, such as multiple return values,
94      lexical scoping, case-insensitive symbols, and complex numbers.
95      The "CL" package generally makes no attempt to emulate these
96      features.
97
98    * Some features conflict with existing things in Emacs Lisp.  For
99      example, Emacs' `assoc' function is incompatible with the Common
100      Lisp `assoc'.  In such cases, this package usually adds the suffix
101      `*' to the function name of the Common Lisp version of the
102      function (e.g., `assoc*').
103
104    The package described here was written by Dave Gillespie,
105 `daveg@synaptics.com'.  It is a total rewrite of the original 1986
106 `cl.el' package by Cesar Quiroz.  Most features of the Quiroz package
107 have been retained; any incompatibilities are noted in the descriptions
108 below.  Care has been taken in this version to ensure that each
109 function is defined efficiently, concisely, and with minimal impact on
110 the rest of the Emacs environment.
111
112 * Menu:
113
114 * Usage::                How to use the CL package
115 * Organization::         The package's five component files
116 * Installation::         Compiling and installing CL
117 * Naming Conventions::   Notes on CL function names
118
119 \1f
120 File: cl.info,  Node: Usage,  Next: Organization,  Prev: Overview,  Up: Overview
121
122 Usage
123 =====
124
125 Lisp code that uses features from the "CL" package should include at
126 the beginning:
127
128      (require 'cl)
129
130 If you want to ensure that the new (Gillespie) version of "CL" is the
131 one that is present, add an additional `(require 'cl-19)' call:
132
133      (require 'cl)
134      (require 'cl-19)
135
136 The second call will fail (with "`cl-19.el' not found") if the old
137 `cl.el' package was in use.
138
139    It is safe to arrange to load "CL" at all times, e.g., in your
140 `.emacs' file.  But it's a good idea, for portability, to `(require
141 'cl)' in your code even if you do this.
142
143 \1f
144 File: cl.info,  Node: Organization,  Next: Installation,  Prev: Usage,  Up: Overview
145
146 Organization
147 ============
148
149 The Common Lisp package is organized into four files:
150
151 `cl.el'
152      This is the "main" file, which contains basic functions and
153      information about the package.  This file is relatively
154      compact--about 700 lines.
155
156 `cl-extra.el'
157      This file contains the larger, more complex or unusual functions.
158      It is kept separate so that packages which only want to use Common
159      Lisp fundamentals like the `cadr' function won't need to pay the
160      overhead of loading the more advanced functions.
161
162 `cl-seq.el'
163      This file contains most of the advanced functions for operating on
164      sequences or lists, such as `delete-if' and `assoc*'.
165
166 `cl-macs.el'
167      This file contains the features of the packages which are macros
168      instead of functions.  Macros expand when the caller is compiled,
169      not when it is run, so the macros generally only need to be
170      present when the byte-compiler is running (or when the macros are
171      used in uncompiled code such as a `.emacs' file).  Most of the
172      macros of this package are isolated in `cl-macs.el' so that they
173      won't take up memory unless you are compiling.
174
175    The file `cl.el' includes all necessary `autoload' commands for the
176 functions and macros in the other three files.  All you have to do is
177 `(require 'cl)', and `cl.el' will take care of pulling in the other
178 files when they are needed.
179
180    There is another file, `cl-compat.el', which defines some routines
181 from the older `cl.el' package that are no longer present in the new
182 package.  This includes internal routines like `setelt' and
183 `zip-lists', deprecated features like `defkeyword', and an emulation of
184 the old-style multiple-values feature.  *Note Old CL Compatibility::.
185
186 \1f
187 File: cl.info,  Node: Installation,  Next: Naming Conventions,  Prev: Organization,  Up: Overview
188
189 Installation
190 ============
191
192 Installation of the "CL" package is simple:  Just put the byte-compiled
193 files `cl.elc', `cl-extra.elc', `cl-seq.elc', `cl-macs.elc', and
194 `cl-compat.elc' into a directory on your `load-path'.
195
196    There are no special requirements to compile this package: The files
197 do not have to be loaded before they are compiled, nor do they need to
198 be compiled in any particular order.
199
200    You may choose to put the files into your main `lisp/' directory,
201 replacing the original `cl.el' file there.  Or, you could put them into
202 a directory that comes before `lisp/' on your `load-path' so that the
203 old `cl.el' is effectively hidden.
204
205    Also, format the `cl.texinfo' file and put the resulting Info files
206 in the `info/' directory or another suitable place.
207
208    You may instead wish to leave this package's components all in their
209 own directory, and then add this directory to your `load-path' and
210 (Emacs 19 only) `Info-directory-list'.  Add the directory to the front
211 of the list so the old "CL" package and its documentation are hidden.
212
213 \1f
214 File: cl.info,  Node: Naming Conventions,  Prev: Installation,  Up: Overview
215
216 Naming Conventions
217 ==================
218
219 Except where noted, all functions defined by this package have the same
220 names and calling conventions as their Common Lisp counterparts.
221
222    Following is a complete list of functions whose names were changed
223 from Common Lisp, usually to avoid conflicts with Emacs.  In each case,
224 a `*' has been appended to the Common Lisp name to obtain the Emacs
225 name:
226
227      defun*        defsubst*     defmacro*     function*
228      member*       assoc*        rassoc*       get*
229      remove*       delete*       mapcar*       sort*
230      floor*        ceiling*      truncate*     round*
231      mod*          rem*          random*
232
233    Internal function and variable names in the package are prefixed by
234 `cl-'.  Here is a complete list of functions *not* prefixed by `cl-'
235 which were not taken from Common Lisp:
236
237      member        delete        remove        remq
238      rassoc        floatp-safe   lexical-let   lexical-let*
239      callf         callf2        letf          letf*
240      defsubst*     defalias      add-hook      eval-when-compile
241
242 (Most of these are Emacs 19 features provided to Emacs 18 users, or
243 introduced, like `remq', for reasons of symmetry with similar features.)
244
245    The following simple functions and macros are defined in `cl.el';
246 they do not cause other components like `cl-extra' to be loaded.
247
248      eql           floatp-safe   abs           endp
249      evenp         oddp          plusp         minusp
250      last          butlast       nbutlast      caar .. cddddr
251      list*         ldiff         rest          first .. tenth
252      member [1]    copy-list     subst         mapcar* [2]
253      adjoin [3]    acons         pairlis       when
254      unless        pop [4]       push [4]      pushnew [3,4]
255      incf [4]      decf [4]      proclaim      declaim
256      add-hook
257
258 [1] This is the Emacs 19-compatible function, not `member*'.
259
260 [2] Only for one sequence argument or two list arguments.
261
262 [3] Only if `:test' is `eq', `equal', or unspecified, and `:key' is not
263 used.
264
265 [4] Only when PLACE is a plain variable name.
266
267 \1f
268 File: cl.info,  Node: Program Structure,  Next: Predicates,  Prev: Overview,  Up: Top
269
270 Program Structure
271 *****************
272
273 This section describes features of the "CL" package which have to do
274 with programs as a whole: advanced argument lists for functions, and
275 the `eval-when' construct.
276
277 * Menu:
278
279 * Argument Lists::       `&key', `&aux', `defun*', `defmacro*'.
280 * Time of Evaluation::   The `eval-when' construct.
281 * Function Aliases::     The `defalias' function.
282
283 \1f
284 File: cl.info,  Node: Argument Lists,  Next: Time of Evaluation,  Prev: Program Structure,  Up: Program Structure
285
286 Argument Lists
287 ==============
288
289 Emacs Lisp's notation for argument lists of functions is a subset of
290 the Common Lisp notation.  As well as the familiar `&optional' and
291 `&rest' markers, Common Lisp allows you to specify default values for
292 optional arguments, and it provides the additional markers `&key' and
293 `&aux'.
294
295    Since argument parsing is built-in to Emacs, there is no way for
296 this package to implement Common Lisp argument lists seamlessly.
297 Instead, this package defines alternates for several Lisp forms which
298 you must use if you need Common Lisp argument lists.
299
300  - Special Form: defun* NAME ARGLIST BODY...
301      This form is identical to the regular `defun' form, except that
302      ARGLIST is allowed to be a full Common Lisp argument list.  Also,
303      the function body is enclosed in an implicit block called NAME;
304      *note Blocks and Exits::..
305
306  - Special Form: defsubst* NAME ARGLIST BODY...
307      This is just like `defun*', except that the function that is
308      defined is automatically proclaimed `inline', i.e., calls to it
309      may be expanded into in-line code by the byte compiler.  This is
310      analogous to the `defsubst' form in Emacs 19; `defsubst*' uses a
311      different method (compiler macros) which works in all version of
312      Emacs, and also generates somewhat more efficient inline
313      expansions.  In particular, `defsubst*' arranges for the
314      processing of keyword arguments, default values, etc., to be done
315      at compile-time whenever possible.
316
317  - Special Form: defmacro* NAME ARGLIST BODY...
318      This is identical to the regular `defmacro' form, except that
319      ARGLIST is allowed to be a full Common Lisp argument list.  The
320      `&environment' keyword is supported as described in Steele.  The
321      `&whole' keyword is supported only within destructured lists (see
322      below); top-level `&whole' cannot be implemented with the current
323      Emacs Lisp interpreter.  The macro expander body is enclosed in an
324      implicit block called NAME.
325
326  - Special Form: function* SYMBOL-OR-LAMBDA
327      This is identical to the regular `function' form, except that if
328      the argument is a `lambda' form then that form may use a full
329      Common Lisp argument list.
330
331    Also, all forms (such as `defsetf' and `flet') defined in this
332 package that include ARGLISTs in their syntax allow full Common Lisp
333 argument lists.
334
335    Note that it is *not* necessary to use `defun*' in order to have
336 access to most "CL" features in your function.  These features are
337 always present; `defun*''s only difference from `defun' is its more
338 flexible argument lists and its implicit block.
339
340    The full form of a Common Lisp argument list is
341
342      (VAR...
343       &optional (VAR INITFORM SVAR)...
344       &rest VAR
345       &key ((KEYWORD VAR) INITFORM SVAR)...
346       &aux (VAR INITFORM)...)
347
348    Each of the five argument list sections is optional.  The SVAR,
349 INITFORM, and KEYWORD parts are optional; if they are omitted, then
350 `(VAR)' may be written simply `VAR'.
351
352    The first section consists of zero or more "required" arguments.
353 These arguments must always be specified in a call to the function;
354 there is no difference between Emacs Lisp and Common Lisp as far as
355 required arguments are concerned.
356
357    The second section consists of "optional" arguments.  These
358 arguments may be specified in the function call; if they are not,
359 INITFORM specifies the default value used for the argument.  (No
360 INITFORM means to use `nil' as the default.)  The INITFORM is evaluated
361 with the bindings for the preceding arguments already established; `(a
362 &optional (b (1+ a)))' matches one or two arguments, with the second
363 argument defaulting to one plus the first argument.  If the SVAR is
364 specified, it is an auxiliary variable which is bound to `t' if the
365 optional argument was specified, or to `nil' if the argument was
366 omitted.  If you don't use an SVAR, then there will be no way for your
367 function to tell whether it was called with no argument, or with the
368 default value passed explicitly as an argument.
369
370    The third section consists of a single "rest" argument.  If more
371 arguments were passed to the function than are accounted for by the
372 required and optional arguments, those extra arguments are collected
373 into a list and bound to the "rest" argument variable.  Common Lisp's
374 `&rest' is equivalent to that of Emacs Lisp.  Common Lisp accepts
375 `&body' as a synonym for `&rest' in macro contexts; this package
376 accepts it all the time.
377
378    The fourth section consists of "keyword" arguments.  These are
379 optional arguments which are specified by name rather than positionally
380 in the argument list.  For example,
381
382      (defun* foo (a &optional b &key c d (e 17)))
383
384 defines a function which may be called with one, two, or more
385 arguments.  The first two arguments are bound to `a' and `b' in the
386 usual way.  The remaining arguments must be pairs of the form `:c',
387 `:d', or `:e' followed by the value to be bound to the corresponding
388 argument variable.  (Symbols whose names begin with a colon are called
389 "keywords", and they are self-quoting in the same way as `nil' and `t'.)
390
391    For example, the call `(foo 1 2 :d 3 :c 4)' sets the five arguments
392 to 1, 2, 4, 3, and 17, respectively.  If the same keyword appears more
393 than once in the function call, the first occurrence takes precedence
394 over the later ones.  Note that it is not possible to specify keyword
395 arguments without specifying the optional argument `b' as well, since
396 `(foo 1 :c 2)' would bind `b' to the keyword `:c', then signal an error
397 because `2' is not a valid keyword.
398
399    If a KEYWORD symbol is explicitly specified in the argument list as
400 shown in the above diagram, then that keyword will be used instead of
401 just the variable name prefixed with a colon.  You can specify a
402 KEYWORD symbol which does not begin with a colon at all, but such
403 symbols will not be self-quoting; you will have to quote them
404 explicitly with an apostrophe in the function call.
405
406    Ordinarily it is an error to pass an unrecognized keyword to a
407 function, e.g., `(foo 1 2 :c 3 :goober 4)'.  You can ask Lisp to ignore
408 unrecognized keywords, either by adding the marker `&allow-other-keys'
409 after the keyword section of the argument list, or by specifying an
410 `:allow-other-keys' argument in the call whose value is non-`nil'.  If
411 the function uses both `&rest' and `&key' at the same time, the "rest"
412 argument is bound to the keyword list as it appears in the call.  For
413 example:
414
415      (defun* find-thing (thing &rest rest &key need &allow-other-keys)
416        (or (apply 'member* thing thing-list :allow-other-keys t rest)
417            (if need (error "Thing not found"))))
418
419 This function takes a `:need' keyword argument, but also accepts other
420 keyword arguments which are passed on to the `member*' function.
421 `allow-other-keys' is used to keep both `find-thing' and `member*' from
422 complaining about each others' keywords in the arguments.
423
424    As a (significant) performance optimization, this package implements
425 the scan for keyword arguments by calling `memq' to search for keywords
426 in a "rest" argument.  Technically speaking, this is incorrect, since
427 `memq' looks at the odd-numbered values as well as the even-numbered
428 keywords.  The net effect is that if you happen to pass a keyword symbol
429 as the *value* of another keyword argument, where that keyword symbol
430 happens to equal the name of a valid keyword argument of the same
431 function, then the keyword parser will become confused.  This minor bug
432 can only affect you if you use keyword symbols as general-purpose data
433 in your program; this practice is strongly discouraged in Emacs Lisp.
434
435    The fifth section of the argument list consists of "auxiliary
436 variables".  These are not really arguments at all, but simply
437 variables which are bound to `nil' or to the specified INITFORMS during
438 execution of the function.  There is no difference between the
439 following two functions, except for a matter of stylistic taste:
440
441      (defun* foo (a b &aux (c (+ a b)) d)
442        BODY)
443      
444      (defun* foo (a b)
445        (let ((c (+ a b)) d)
446          BODY))
447
448    Argument lists support "destructuring".  In Common Lisp,
449 destructuring is only allowed with `defmacro'; this package allows it
450 with `defun*' and other argument lists as well.  In destructuring, any
451 argument variable (VAR in the above diagram) can be replaced by a list
452 of variables, or more generally, a recursive argument list.  The
453 corresponding argument value must be a list whose elements match this
454 recursive argument list.  For example:
455
456      (defmacro* dolist ((var listform &optional resultform)
457                         &rest body)
458        ...)
459
460    This says that the first argument of `dolist' must be a list of two
461 or three items; if there are other arguments as well as this list, they
462 are stored in `body'.  All features allowed in regular argument lists
463 are allowed in these recursive argument lists.  In addition, the clause
464 `&whole VAR' is allowed at the front of a recursive argument list.  It
465 binds VAR to the whole list being matched; thus `(&whole all a b)'
466 matches a list of two things, with `a' bound to the first thing, `b'
467 bound to the second thing, and `all' bound to the list itself.  (Common
468 Lisp allows `&whole' in top-level `defmacro' argument lists as well,
469 but Emacs Lisp does not support this usage.)
470
471    One last feature of destructuring is that the argument list may be
472 dotted, so that the argument list `(a b . c)' is functionally
473 equivalent to `(a b &rest c)'.
474
475    If the optimization quality `safety' is set to 0 (*note
476 Declarations::.), error checking for wrong number of arguments and
477 invalid keyword arguments is disabled.  By default, argument lists are
478 rigorously checked.
479
480 \1f
481 File: cl.info,  Node: Time of Evaluation,  Next: Function Aliases,  Prev: Argument Lists,  Up: Program Structure
482
483 Time of Evaluation
484 ==================
485
486 Normally, the byte-compiler does not actually execute the forms in a
487 file it compiles.  For example, if a file contains `(setq foo t)', the
488 act of compiling it will not actually set `foo' to `t'.  This is true
489 even if the `setq' was a top-level form (i.e., not enclosed in a
490 `defun' or other form).  Sometimes, though, you would like to have
491 certain top-level forms evaluated at compile-time.  For example, the
492 compiler effectively evaluates `defmacro' forms at compile-time so that
493 later parts of the file can refer to the macros that are defined.
494
495  - Special Form: eval-when (SITUATIONS...) FORMS...
496      This form controls when the body FORMS are evaluated.  The
497      SITUATIONS list may contain any set of the symbols `compile',
498      `load', and `eval' (or their long-winded ANSI equivalents,
499      `:compile-toplevel', `:load-toplevel', and `:execute').
500
501      The `eval-when' form is handled differently depending on whether
502      or not it is being compiled as a top-level form.  Specifically, it
503      gets special treatment if it is being compiled by a command such
504      as `byte-compile-file' which compiles files or buffers of code,
505      and it appears either literally at the top level of the file or
506      inside a top-level `progn'.
507
508      For compiled top-level `eval-when's, the body FORMS are executed
509      at compile-time if `compile' is in the SITUATIONS list, and the
510      FORMS are written out to the file (to be executed at load-time) if
511      `load' is in the SITUATIONS list.
512
513      For non-compiled-top-level forms, only the `eval' situation is
514      relevant.  (This includes forms executed by the interpreter, forms
515      compiled with `byte-compile' rather than `byte-compile-file', and
516      non-top-level forms.)  The `eval-when' acts like a `progn' if
517      `eval' is specified, and like `nil' (ignoring the body FORMS) if
518      not.
519
520      The rules become more subtle when `eval-when's are nested; consult
521      Steele (second edition) for the gruesome details (and some
522      gruesome examples).
523
524      Some simple examples:
525
526           ;; Top-level forms in foo.el:
527           (eval-when (compile)           (setq foo1 'bar))
528           (eval-when (load)              (setq foo2 'bar))
529           (eval-when (compile load)      (setq foo3 'bar))
530           (eval-when (eval)              (setq foo4 'bar))
531           (eval-when (eval compile)      (setq foo5 'bar))
532           (eval-when (eval load)         (setq foo6 'bar))
533           (eval-when (eval compile load) (setq foo7 'bar))
534
535      When `foo.el' is compiled, these variables will be set during the
536      compilation itself:
537
538           foo1  foo3  foo5  foo7      ; `compile'
539
540      When `foo.elc' is loaded, these variables will be set:
541
542           foo2  foo3  foo6  foo7      ; `load'
543
544      And if `foo.el' is loaded uncompiled, these variables will be set:
545
546           foo4  foo5  foo6  foo7      ; `eval'
547
548      If these seven `eval-when's had been, say, inside a `defun', then
549      the first three would have been equivalent to `nil' and the last
550      four would have been equivalent to the corresponding `setq's.
551
552      Note that `(eval-when (load eval) ...)' is equivalent to `(progn
553      ...)' in all contexts.  The compiler treats certain top-level
554      forms, like `defmacro' (sort-of) and `require', as if they were
555      wrapped in `(eval-when (compile load eval) ...)'.
556
557    Emacs 19 includes two special forms related to `eval-when'.  One of
558 these, `eval-when-compile', is not quite equivalent to any `eval-when'
559 construct and is described below.  This package defines a version of
560 `eval-when-compile' for the benefit of Emacs 18 users.
561
562    The other form, `(eval-and-compile ...)', is exactly equivalent to
563 `(eval-when (compile load eval) ...)' and so is not itself defined by
564 this package.
565
566  - Special Form: eval-when-compile FORMS...
567      The FORMS are evaluated at compile-time; at execution time, this
568      form acts like a quoted constant of the resulting value.  Used at
569      top-level, `eval-when-compile' is just like `eval-when (compile
570      eval)'.  In other contexts, `eval-when-compile' allows code to be
571      evaluated once at compile-time for efficiency or other reasons.
572
573      This form is similar to the `#.' syntax of true Common Lisp.
574
575  - Special Form: load-time-value FORM
576      The FORM is evaluated at load-time; at execution time, this form
577      acts like a quoted constant of the resulting value.
578
579      Early Common Lisp had a `#,' syntax that was similar to this, but
580      ANSI Common Lisp replaced it with `load-time-value' and gave it
581      more well-defined semantics.
582
583      In a compiled file, `load-time-value' arranges for FORM to be
584      evaluated when the `.elc' file is loaded and then used as if it
585      were a quoted constant.  In code compiled by `byte-compile' rather
586      than `byte-compile-file', the effect is identical to
587      `eval-when-compile'.  In uncompiled code, both `eval-when-compile'
588      and `load-time-value' act exactly like `progn'.
589
590           (defun report ()
591             (insert "This function was executed on: "
592                     (current-time-string)
593                     ", compiled on: "
594                     (eval-when-compile (current-time-string))
595                     ;; or '#.(current-time-string) in real Common Lisp
596                     ", and loaded on: "
597                     (load-time-value (current-time-string))))
598
599      Byte-compiled, the above defun will result in the following code
600      (or its compiled equivalent, of course) in the `.elc' file:
601
602           (setq --temp-- (current-time-string))
603           (defun report ()
604             (insert "This function was executed on: "
605                     (current-time-string)
606                     ", compiled on: "
607                     '"Wed Jun 23 18:33:43 1993"
608                     ", and loaded on: "
609                     --temp--))
610
611 \1f
612 File: cl.info,  Node: Function Aliases,  Prev: Time of Evaluation,  Up: Program Structure
613
614 Function Aliases
615 ================
616
617 This section describes a feature from GNU Emacs 19 which this package
618 makes available in other versions of Emacs.
619
620  - Function: defalias SYMBOL FUNCTION
621      This function sets SYMBOL's function cell to FUNCTION.  It is
622      equivalent to `fset', except that in GNU Emacs 19 it also records
623      the setting in `load-history' so that it can be undone by a later
624      `unload-feature'.
625
626      In other versions of Emacs, `defalias' is a synonym for `fset'.
627
628 \1f
629 File: cl.info,  Node: Predicates,  Next: Control Structure,  Prev: Program Structure,  Up: Top
630
631 Predicates
632 **********
633
634 This section describes functions for testing whether various facts are
635 true or false.
636
637 * Menu:
638
639 * Type Predicates::      `typep', `deftype', and `coerce'
640 * Equality Predicates::  `eql' and `equalp'
641
642 \1f
643 File: cl.info,  Node: Type Predicates,  Next: Equality Predicates,  Prev: Predicates,  Up: Predicates
644
645 Type Predicates
646 ===============
647
648 The "CL" package defines a version of the Common Lisp `typep' predicate.
649
650  - Function: typep OBJECT TYPE
651      Check if OBJECT is of type TYPE, where TYPE is a (quoted) type
652      name of the sort used by Common Lisp.  For example, `(typep foo
653      'integer)' is equivalent to `(integerp foo)'.
654
655    The TYPE argument to the above function is either a symbol or a list
656 beginning with a symbol.
657
658    * If the type name is a symbol, Emacs appends `-p' to the symbol
659      name to form the name of a predicate function for testing the
660      type.  (Built-in predicates whose names end in `p' rather than
661      `-p' are used when appropriate.)
662
663    * The type symbol `t' stands for the union of all types.  `(typep
664      OBJECT t)' is always true.  Likewise, the type symbol `nil' stands
665      for nothing at all, and `(typep OBJECT nil)' is always false.
666
667    * The type symbol `null' represents the symbol `nil'.  Thus `(typep
668      OBJECT 'null)' is equivalent to `(null OBJECT)'.
669
670    * The type symbol `real' is a synonym for `number', and `fixnum' is
671      a synonym for `integer'.
672
673    * The type symbols `character' and `string-char' match characters.
674      In Emacs-19 and XEmacs-19, characters are the same thing as
675      integers in the range 0-255.  In XEmacs-20, where characters are a
676      first-class data type, this checks for actual characters, and
677      `(typep 8BIT-INTEGER 'character)' will return `nil'.
678
679    * The type symbol `float' uses the `floatp-safe' predicate defined
680      by this package rather than `floatp', so it will work correctly
681      even in Emacs versions without floating-point support.
682
683    * The type list `(integer LOW HIGH)' represents all integers between
684      LOW and HIGH, inclusive.  Either bound may be a list of a single
685      integer to specify an exclusive limit, or a `*' to specify no
686      limit.  The type `(integer * *)' is thus equivalent to `integer'.
687
688    * Likewise, lists beginning with `float', `real', or `number'
689      represent numbers of that type falling in a particular range.
690
691    * Lists beginning with `and', `or', and `not' form combinations of
692      types.  For example, `(or integer (float 0 *))' represents all
693      objects that are integers or non-negative floats.
694
695    * Lists beginning with `member' or `member*' represent objects `eql'
696      to any of the following values.  For example, `(member 1 2 3 4)'
697      is equivalent to `(integer 1 4)', and `(member nil)' is equivalent
698      to `null'.
699
700    * Lists of the form `(satisfies PREDICATE)' represent all objects
701      for which PREDICATE returns true when called with that object as
702      an argument.
703
704    The following function and macro (not technically predicates) are
705 related to `typep'.
706
707  - Function: coerce OBJECT TYPE
708      This function attempts to convert OBJECT to the specified TYPE.
709      If OBJECT is already of that type as determined by `typep', it is
710      simply returned.  Otherwise, certain types of conversions will be
711      made:  If TYPE is any sequence type (`string', `list', etc.) then
712      OBJECT will be converted to that type if possible.  If TYPE is
713      `character', then strings of length one and symbols with
714      one-character names can be coerced.  If TYPE is `float', then
715      integers can be coerced in versions of Emacs that support floats.
716      In all other circumstances, `coerce' signals an error.
717
718  - Special Form: deftype NAME ARGLIST FORMS...
719      This macro defines a new type called NAME.  It is similar to
720      `defmacro' in many ways; when NAME is encountered as a type name,
721      the body FORMS are evaluated and should return a type specifier
722      that is equivalent to the type.  The ARGLIST is a Common Lisp
723      argument list of the sort accepted by `defmacro*'.  The type
724      specifier `(NAME ARGS...)'  is expanded by calling the expander
725      with those arguments; the type symbol `NAME' is expanded by
726      calling the expander with no arguments.  The ARGLIST is processed
727      the same as for `defmacro*' except that optional arguments without
728      explicit defaults use `*' instead of `nil' as the "default"
729      default.  Some examples:
730
731           (deftype null () '(satisfies null))    ; predefined
732           (deftype list () '(or null cons))      ; predefined
733           (deftype unsigned-byte (&optional bits)
734             (list 'integer 0 (if (eq bits '*) bits (1- (lsh 1 bits)))))
735           (unsigned-byte 8)  ==  (integer 0 255)
736           (unsigned-byte)  ==  (integer 0 *)
737           unsigned-byte  ==  (integer 0 *)
738
739      The last example shows how the Common Lisp `unsigned-byte' type
740      specifier could be implemented if desired; this package does not
741      implement `unsigned-byte' by default.
742
743    The `typecase' and `check-type' macros also use type names.  *Note
744 Conditionals::.  *Note Assertions::.  The `map', `concatenate', and
745 `merge' functions take type-name arguments to specify the type of
746 sequence to return.  *Note Sequences::.
747
748 \1f
749 File: cl.info,  Node: Equality Predicates,  Prev: Type Predicates,  Up: Predicates
750
751 Equality Predicates
752 ===================
753
754 This package defines two Common Lisp predicates, `eql' and `equalp'.
755
756  - Function: eql A B
757      This function is almost the same as `eq', except that if A and B
758      are numbers of the same type, it compares them for numeric
759      equality (as if by `equal' instead of `eq').  This makes a
760      difference only for versions of Emacs that are compiled with
761      floating-point support, such as Emacs 19.  Emacs floats are
762      allocated objects just like cons cells, which means that `(eq 3.0
763      3.0)' will not necessarily be true--if the two `3.0's were
764      allocated separately, the pointers will be different even though
765      the numbers are the same.  But `(eql 3.0 3.0)' will always be true.
766
767      The types of the arguments must match, so `(eql 3 3.0)' is still
768      false.
769
770      Note that Emacs integers are "direct" rather than allocated, which
771      basically means `(eq 3 3)' will always be true.  Thus `eq' and
772      `eql' behave differently only if floating-point numbers are
773      involved, and are indistinguishable on Emacs versions that don't
774      support floats.
775
776      There is a slight inconsistency with Common Lisp in the treatment
777      of positive and negative zeros.  Some machines, notably those with
778      IEEE standard arithmetic, represent `+0' and `-0' as distinct
779      values.  Normally this doesn't matter because the standard
780      specifies that `(= 0.0 -0.0)' should always be true, and this is
781      indeed what Emacs Lisp and Common Lisp do.  But the Common Lisp
782      standard states that `(eql 0.0 -0.0)' and `(equal 0.0 -0.0)' should
783      be false on IEEE-like machines; Emacs Lisp does not do this, and in
784      fact the only known way to distinguish between the two zeros in
785      Emacs Lisp is to `format' them and check for a minus sign.
786
787  - Function: equalp A B
788      This function is a more flexible version of `equal'.  In
789      particular, it compares strings and characters case-insensitively,
790      and it compares numbers without regard to type (so that `(equalp 3
791      3.0)' is true).  Vectors and conses are compared recursively.  All
792      other objects are compared as if by `equal'.
793
794      This function differs from Common Lisp `equalp' in several
795      respects.  In keeping with the idea that strings are less
796      vector-like in Emacs Lisp, this package's `equalp' also will not
797      compare strings against vectors of integers.
798
799    Also note that the Common Lisp functions `member' and `assoc' use
800 `eql' to compare elements, whereas Emacs Lisp follows the MacLisp
801 tradition and uses `equal' for these two functions.  In Emacs, use
802 `member*' and `assoc*' to get functions which use `eql' for comparisons.
803
804 \1f
805 File: cl.info,  Node: Control Structure,  Next: Macros,  Prev: Predicates,  Up: Top
806
807 Control Structure
808 *****************
809
810 The features described in the following sections implement various
811 advanced control structures, including the powerful `setf' facility and
812 a number of looping and conditional constructs.
813
814 * Menu:
815
816 * Assignment::             The `psetq' form
817 * Generalized Variables::  `setf', `incf', `push', etc.
818 * Variable Bindings::      `progv', `lexical-let', `flet', `macrolet'
819 * Conditionals::           `when', `unless', `case', `typecase'
820 * Blocks and Exits::       `block', `return', `return-from'
821 * Iteration::              `do', `dotimes', `dolist', `do-symbols'
822 * Loop Facility::          The Common Lisp `loop' macro
823 * Multiple Values::        `values', `multiple-value-bind', etc.
824
825 \1f
826 File: cl.info,  Node: Assignment,  Next: Generalized Variables,  Prev: Control Structure,  Up: Control Structure
827
828 Assignment
829 ==========
830
831 The `psetq' form is just like `setq', except that multiple assignments
832 are done in parallel rather than sequentially.
833
834  - Special Form: psetq [SYMBOL FORM]...
835      This special form (actually a macro) is used to assign to several
836      variables simultaneously.  Given only one SYMBOL and FORM, it has
837      the same effect as `setq'.  Given several SYMBOL and FORM pairs,
838      it evaluates all the FORMs in advance and then stores the
839      corresponding variables afterwards.
840
841           (setq x 2 y 3)
842           (setq x (+ x y)  y (* x y))
843           x
844                => 5
845           y                     ; `y' was computed after `x' was set.
846                => 15
847           (setq x 2 y 3)
848           (psetq x (+ x y)  y (* x y))
849           x
850                => 5
851           y                     ; `y' was computed before `x' was set.
852                => 6
853
854      The simplest use of `psetq' is `(psetq x y y x)', which exchanges
855      the values of two variables.  (The `rotatef' form provides an even
856      more convenient way to swap two variables; *note Modify Macros::..)
857
858      `psetq' always returns `nil'.
859
860 \1f
861 File: cl.info,  Node: Generalized Variables,  Next: Variable Bindings,  Prev: Assignment,  Up: Control Structure
862
863 Generalized Variables
864 =====================
865
866 A "generalized variable" or "place form" is one of the many places in
867 Lisp memory where values can be stored.  The simplest place form is a
868 regular Lisp variable.  But the cars and cdrs of lists, elements of
869 arrays, properties of symbols, and many other locations are also places
870 where Lisp values are stored.
871
872    The `setf' form is like `setq', except that it accepts arbitrary
873 place forms on the left side rather than just symbols.  For example,
874 `(setf (car a) b)' sets the car of `a' to `b', doing the same operation
875 as `(setcar a b)' but without having to remember two separate functions
876 for setting and accessing every type of place.
877
878    Generalized variables are analogous to "lvalues" in the C language,
879 where `x = a[i]' gets an element from an array and `a[i] = x' stores an
880 element using the same notation.  Just as certain forms like `a[i]' can
881 be lvalues in C, there is a set of forms that can be generalized
882 variables in Lisp.
883
884 * Menu:
885
886 * Basic Setf::         `setf' and place forms
887 * Modify Macros::      `incf', `push', `rotatef', `letf', `callf', etc.
888 * Customizing Setf::   `define-modify-macro', `defsetf', `define-setf-method'
889
890 \1f
891 File: cl.info,  Node: Basic Setf,  Next: Modify Macros,  Prev: Generalized Variables,  Up: Generalized Variables
892
893 Basic Setf
894 ----------
895
896 The `setf' macro is the most basic way to operate on generalized
897 variables.
898
899  - Special Form: setf [PLACE FORM]...
900      This macro evaluates FORM and stores it in PLACE, which must be a
901      valid generalized variable form.  If there are several PLACE and
902      FORM pairs, the assignments are done sequentially just as with
903      `setq'.  `setf' returns the value of the last FORM.
904
905      The following Lisp forms will work as generalized variables, and
906      so may legally appear in the PLACE argument of `setf':
907
908         * A symbol naming a variable.  In other words, `(setf x y)' is
909           exactly equivalent to `(setq x y)', and `setq' itself is
910           strictly speaking redundant now that `setf' exists.  Many
911           programmers continue to prefer `setq' for setting simple
912           variables, though, purely for stylistic or historical reasons.
913           The macro `(setf x y)' actually expands to `(setq x y)', so
914           there is no performance penalty for using it in compiled code.
915
916         * A call to any of the following Lisp functions:
917
918                car                 cdr                 caar .. cddddr
919                nth                 rest                first .. tenth
920                aref                elt                 nthcdr
921                symbol-function     symbol-value        symbol-plist
922                get                 get*                getf
923                gethash             subseq
924
925           Note that for `nthcdr' and `getf', the list argument of the
926           function must itself be a valid PLACE form.  For example,
927           `(setf (nthcdr 0 foo) 7)' will set `foo' itself to 7.  Note
928           that `push' and `pop' on an `nthcdr' place can be used to
929           insert or delete at any position in a list.  The use of
930           `nthcdr' as a PLACE form is an extension to standard Common
931           Lisp.
932
933         * The following Emacs-specific functions are also `setf'-able.
934           (Some of these are defined only in Emacs 19 or only in
935           XEmacs.)
936
937                buffer-file-name                  marker-position
938                buffer-modified-p                 match-data
939                buffer-name                       mouse-position
940                buffer-string                     overlay-end
941                buffer-substring                  overlay-get
942                current-buffer                    overlay-start
943                current-case-table                point
944                current-column                    point-marker
945                current-global-map                point-max
946                current-input-mode                point-min
947                current-local-map                 process-buffer
948                current-window-configuration      process-filter
949                default-file-modes                process-sentinel
950                default-value                     read-mouse-position
951                documentation-property            screen-height
952                extent-data                       screen-menubar
953                extent-end-position               screen-width
954                extent-start-position             selected-window
955                face-background                   selected-screen
956                face-background-pixmap            selected-frame
957                face-font                         standard-case-table
958                face-foreground                   syntax-table
959                face-underline-p                  window-buffer
960                file-modes                        window-dedicated-p
961                frame-height                      window-display-table
962                frame-parameters                  window-height
963                frame-visible-p                   window-hscroll
964                frame-width                       window-point
965                get-register                      window-start
966                getenv                            window-width
967                global-key-binding                x-get-cut-buffer
968                keymap-parent                     x-get-cutbuffer
969                local-key-binding                 x-get-secondary-selection
970                mark                              x-get-selection
971                mark-marker
972
973           Most of these have directly corresponding "set" functions,
974           like `use-local-map' for `current-local-map', or `goto-char'
975           for `point'.  A few, like `point-min', expand to longer
976           sequences of code when they are `setf''d (`(narrow-to-region
977           x (point-max))' in this case).
978
979         * A call of the form `(substring SUBPLACE N [M])', where
980           SUBPLACE is itself a legal generalized variable whose current
981           value is a string, and where the value stored is also a
982           string.  The new string is spliced into the specified part of
983           the destination string.  For example:
984
985                (setq a (list "hello" "world"))
986                     => ("hello" "world")
987                (cadr a)
988                     => "world"
989                (substring (cadr a) 2 4)
990                     => "rl"
991                (setf (substring (cadr a) 2 4) "o")
992                     => "o"
993                (cadr a)
994                     => "wood"
995                a
996                     => ("hello" "wood")
997
998           The generalized variable `buffer-substring', listed above,
999           also works in this way by replacing a portion of the current
1000           buffer.
1001
1002         * A call of the form `(apply 'FUNC ...)' or `(apply (function
1003           FUNC) ...)', where FUNC is a `setf'-able function whose store
1004           function is "suitable" in the sense described in Steele's
1005           book; since none of the standard Emacs place functions are
1006           suitable in this sense, this feature is only interesting when
1007           used with places you define yourself with
1008           `define-setf-method' or the long form of `defsetf'.
1009
1010         * A macro call, in which case the macro is expanded and `setf'
1011           is applied to the resulting form.
1012
1013         * Any form for which a `defsetf' or `define-setf-method' has
1014           been made.
1015
1016      Using any forms other than these in the PLACE argument to `setf'
1017      will signal an error.
1018
1019      The `setf' macro takes care to evaluate all subforms in the proper
1020      left-to-right order; for example,
1021
1022           (setf (aref vec (incf i)) i)
1023
1024      looks like it will evaluate `(incf i)' exactly once, before the
1025      following access to `i'; the `setf' expander will insert temporary
1026      variables as necessary to ensure that it does in fact work this
1027      way no matter what setf-method is defined for `aref'.  (In this
1028      case, `aset' would be used and no such steps would be necessary
1029      since `aset' takes its arguments in a convenient order.)
1030
1031      However, if the PLACE form is a macro which explicitly evaluates
1032      its arguments in an unusual order, this unusual order will be
1033      preserved.  Adapting an example from Steele, given
1034
1035           (defmacro wrong-order (x y) (list 'aref y x))
1036
1037      the form `(setf (wrong-order A B) 17)' will evaluate B first, then
1038      A, just as in an actual call to `wrong-order'.
1039