compiled-function-p
compiled-function-p Function
Syntax:
compiled-function-p object → generalized-boolean
Arguments and Values:
object—an object.
generalized-boolean—a generalized boolean.
Description:
Returns true if object is of type compiled-function; otherwise, returns false.
Examples:
(defun f (x) x) → F
(compiled-function-p #’f)
→ false
<i><sup>or</sup>→ true</i>
(compiled-function-p ’f) → false
(compile ’f) → F
(compiled-function-p #’f) → true
(compiled-function-p ’f) → false
(compiled-function-p (compile nil ’(lambda (x) x)))
→ true
(compiled-function-p #’(lambda (x) x))
→ false
<i><sup>or</sup>→ true</i>
(compiled-function-p ’(lambda (x) x)) → false
See Also:
compile, compile-file, compiled-function
Notes:
(compiled-function-p object) ≡ (typep object ’compiled-function)
Expanded Reference: compiled-function-p
Testing Compiled Functions
compiled-function-p returns true if its argument is a compiled function. Functions defined at the top level are typically compiled in most implementations.
;; A top-level defun is usually compiled
(defun square (x) (* x x))
(compiled-function-p #'square)
=> T
;; Built-in functions are compiled
(compiled-function-p #'car)
=> T
(compiled-function-p #'mapcar)
=> T
Interpreted vs. Compiled Lambda Functions
Lambda expressions evaluated directly may or may not be compiled, depending on the implementation. You can ensure compilation with compile.
;; A lambda may or may not be compiled depending on the implementation
(compiled-function-p (lambda (x) (1+ x)))
=> T
;; Explicitly compiling ensures a compiled function
(compiled-function-p (compile nil (lambda (x) (1+ x))))
=> T
Relationship to functionp
Every compiled function is a function, but not every function is necessarily compiled.
(let ((f (compile nil (lambda (x) (* x x)))))
(values (functionp f)
(compiled-function-p f)))
=> T
=> T
;; compiled-function-p returns NIL for non-functions
(compiled-function-p 42)
=> NIL
(compiled-function-p 'car)
=> NIL