elisp: Primitive Function Type
2.3.15 Primitive Function Type
------------------------------
A “primitive function” is a function callable from Lisp but written in
the C programming language. Primitive functions are also called “subrs”
or “built-in functions”. (The word “subr” is derived from
“subroutine”.) Most primitive functions evaluate all their arguments
when they are called. A primitive function that does not evaluate all
its arguments is called a “special form” (Special Forms).
It does not matter to the caller of a function whether the function
is primitive. However, this does matter if you try to redefine a
primitive with a function written in Lisp. The reason is that the
primitive function may be called directly from C code. Calls to the
redefined function from Lisp will use the new definition, but calls from
C code may still use the built-in definition. Therefore, *we discourage
redefinition of primitive functions*.
The term “function” refers to all Emacs functions, whether written in
Lisp or C. Function Type, for information about the functions
written in Lisp.
Primitive functions have no read syntax and print in hash notation
with the name of the subroutine.
(symbol-function 'car) ; Access the function cell
; of the symbol.
⇒ #<subr car>
(subrp (symbol-function 'car)) ; Is this a primitive function?
⇒ t ; Yes.