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” (SeeSpecial 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.  SeeFunction 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.