summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/cl-preloaded.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/cl-preloaded.el')
-rw-r--r--lisp/emacs-lisp/cl-preloaded.el17
1 files changed, 11 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el
index 35a8d79a1cd..6128db05c61 100644
--- a/lisp/emacs-lisp/cl-preloaded.el
+++ b/lisp/emacs-lisp/cl-preloaded.el
@@ -349,6 +349,14 @@ The `slots' (and hence `index-table') are currently unused."
;; so the DAG of OClosure types is "orthogonal" to the distinction
;; between interpreted and compiled functions.
+(defun cl-functionp (object)
+ "Return non-nil if OBJECT is a member of type `function'.
+This is like `functionp' except that it returns nil for all lists and symbols,
+regardless if `funcall' would accept to call them."
+ (memq (cl-type-of object)
+ '(primitive-function subr-native-elisp module-function
+ interpreted-function byte-code-function)))
+
(cl--define-built-in-type t nil "Abstract supertype of everything.")
(cl--define-built-in-type atom t "Abstract supertype of anything but cons cells."
:predicate atom)
@@ -356,11 +364,9 @@ The `slots' (and hence `index-table') are currently unused."
(cl--define-built-in-type tree-sitter-compiled-query atom)
(cl--define-built-in-type tree-sitter-node atom)
(cl--define-built-in-type tree-sitter-parser atom)
-(declare-function user-ptrp "data.c")
(when (fboundp 'user-ptrp)
(cl--define-built-in-type user-ptr atom nil
- ;; FIXME: Shouldn't it be called
- ;; `user-ptr-p'?
+ ;; FIXME: Shouldn't it be called `user-ptr-p'?
:predicate user-ptrp))
(cl--define-built-in-type font-object atom)
(cl--define-built-in-type font-entity atom)
@@ -410,8 +416,6 @@ The `slots' (and hence `index-table') are currently unused."
The size depends on the Emacs version and compilation options.
For this build of Emacs it's %dbit."
(1+ (logb (1+ most-positive-fixnum)))))
-(cl--define-built-in-type keyword (symbol)
- "Type of those symbols whose first char is `:'.")
(cl--define-built-in-type boolean (symbol)
"Type of the canonical boolean values, i.e. either nil or t.")
(cl--define-built-in-type symbol-with-pos (symbol)
@@ -431,7 +435,8 @@ For this build of Emacs it's %dbit."
;; Example of slots we could document.
(car car) (cdr cdr))
(cl--define-built-in-type function (atom)
- "Abstract supertype of function values.")
+ "Abstract supertype of function values."
+ :predicate cl-functionp)
(cl--define-built-in-type compiled-function (function)
"Abstract type of functions that have been compiled.")
(cl--define-built-in-type byte-code-function (compiled-function)