]> git.eshelyaron.com Git - emacs.git/commitdiff
functionp doc improvement
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 11 May 2022 17:13:09 +0000 (10:13 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 11 May 2022 17:18:12 +0000 (10:18 -0700)
* doc/lispref/eval.texi, doc/lispref/functions.texi, src/eval.c:
Document functionp a bit more carefully.  It can return t
on non-functions.

doc/lispref/eval.texi
doc/lispref/functions.texi
src/eval.c

index e94e222e6a63fb80a7e08fce0e32b30df7bbf27f..ed3cf56e0982ee0766ea6548537603d54b0c4325 100644 (file)
@@ -435,7 +435,7 @@ expansion.
 @cindex forms, special
 @cindex evaluation of special forms
 
-  A @dfn{special form} is a primitive function specially marked so that
+  A @dfn{special form} is a primitive specially marked so that
 its arguments are not all evaluated.  Most special forms define control
 structures or perform variable bindings---things which functions cannot
 do.
index 2f386eaa47ec0e9c8348d4a50fd4497a78f69df3..55bbf8fd5a201bea0703e176a96f3755708f501f 100644 (file)
@@ -146,7 +146,12 @@ function:
 This function returns @code{t} if @var{object} is any kind of
 function, i.e., can be passed to @code{funcall}.  Note that
 @code{functionp} returns @code{t} for symbols that are function names,
-and returns @code{nil} for special forms.
+and returns @code{nil} for symbols that are macros or special forms.
+
+If @var{object} is not a function, this function ordinarily returns
+@code{nil}.  However, the representation of function objects is
+complicated, and for efficiency reasons in rare cases this function
+can return @code{t} even when @var{object} is not a function.
 @end defun
 
   It is also possible to find out how many arguments an arbitrary
index 950338bf799c09a6cfd459117d61e6d611e569ff..29c122e2fb2701e24535a9b69ae0e8963043a399 100644 (file)
@@ -2805,9 +2805,11 @@ apply1 (Lisp_Object fn, Lisp_Object arg)
 DEFUN ("functionp", Ffunctionp, Sfunctionp, 1, 1, 0,
        doc: /* Return t if OBJECT is a function.
 
-An object is a function if it is callable via `funcall';
-this includes primitive functions, byte-code functions, closures, and
-symbols with function bindings.  */)
+An object is a function if it is callable via `funcall'; this includes
+symbols with function bindings, but excludes macros and special forms.
+
+Ordinarily return nil if OBJECT is not a function, although t might be
+returned in rare cases.  */)
      (Lisp_Object object)
 {
   if (FUNCTIONP (object))