@end iftex
@ifinfo
+@dircategory XEmacs Editor
+@direntry
+* Common Lisp: (cl). GNU Emacs Common Lisp emulation package.
+@end direntry
+
This file documents the GNU Emacs Common Lisp emulation package.
Copyright (C) 1993 Free Software Foundation, Inc.
@example
defun* defsubst* defmacro* function*
-member* assoc* rassoc* get*
-remove* delete* mapcar* sort*
-floor* ceiling* truncate* round*
-mod* rem* random*
+member* assoc* rassoc* remove*
+delete* mapcar* sort* floor*
+ceiling* truncate* round* mod*
+rem* random*
@end example
Internal function and variable names in the package are prefixed
nth rest first .. tenth
aref elt nthcdr
symbol-function symbol-value symbol-plist
-get get* getf
-gethash subseq
+get getf gethash
+subseq
@end smallexample
@noindent
@example
(declaim (inline foo bar))
(eval-when (compile load eval) (proclaim '(inline foo bar)))
-(proclaim-inline foo bar) ; XEmacs only
-(defsubst foo (...) ...) ; instead of defun; Emacs 19 only
+(proclaim-inline foo bar) ; XEmacs only
+(defsubst foo (...) ...) ; instead of defun; Emacs 19 only
@end example
@strong{Please note:} This declaration remains in effect after the
missing from Emacs Lisp.
@menu
-* Property Lists:: `get*', `remprop', `getf', `remf'
+* Property Lists:: `getf', `remf'
* Creating Symbols:: `gensym', `gentemp'
@end menu
@noindent
These functions augment the standard Emacs Lisp functions @code{get}
-and @code{put} for operating on properties attached to symbols.
+and @code{put} for operating on properties attached to objects.
There are also functions for working with property lists as
-first-class data structures not attached to particular symbols.
-
-@defun get* symbol property &optional default
-This function is like @code{get}, except that if the property is
-not found, the @var{default} argument provides the return value.
-(The Emacs Lisp @code{get} function always uses @code{nil} as
-the default; this package's @code{get*} is equivalent to Common
-Lisp's @code{get}.)
-
-The @code{get*} function is @code{setf}-able; when used in this
-fashion, the @var{default} argument is allowed but ignored.
-@end defun
-
-@defun remprop symbol property
-This function removes the entry for @var{property} from the property
-list of @var{symbol}. It returns a true value if the property was
-indeed found and removed, or @code{nil} if there was no such property.
-(This function was probably omitted from Emacs originally because,
-since @code{get} did not allow a @var{default}, it was very difficult
-to distinguish between a missing property and a property whose value
-was @code{nil}; thus, setting a property to @code{nil} was close
-enough to @code{remprop} for most purposes.)
-@end defun
+first-class data structures not attached to particular objects.
@defun getf place property &optional default
This function scans the list @var{place} as if it were a property
(put sym prop val) @equiv{} (setf (getf (symbol-plist sym) prop) val)
@end example
-The @code{get} and @code{get*} functions are also @code{setf}-able.
-The fact that @code{default} is ignored can sometimes be useful:
+The @code{get} function is also @code{setf}-able. The fact that
+@code{default} is ignored can sometimes be useful:
@example
-(incf (get* 'foo 'usage-count 0))
+(incf (get 'foo 'usage-count 0))
@end example
Here, symbol @code{foo}'s @code{usage-count} property is incremented
does not already exist, a new entry is added to the table and the
table is reallocated to a larger size if necessary. The @var{default}
argument is allowed but ignored in this case. The situation is
-exactly analogous to that of @code{get*}; @pxref{Property Lists}.
+exactly analogous to that of @code{get}; @pxref{Property Lists}.
@end defun
@defun remhash key table
just as well to use a regular quote:
@example
-(loop for x in y by #'cddr collect (mapcar #'plusp x)) ; Common Lisp
-(loop for x in y by 'cddr collect (mapcar 'plusp x)) ; Emacs Lisp
+(loop for x in y by #'cddr collect (mapcar #'plusp x)) ; Common Lisp
+(loop for x in y by 'cddr collect (mapcar 'plusp x)) ; Emacs Lisp
@end example
When @code{#'} introduces a @code{lambda} form, it is best to