blob: 4e93aeeab8fb63f71199728ccd2b75d98a8bcbdc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
|
<h4 class="subsection">Primitive Function Type</h4> <p>A <em>primitive function</em> is a function callable from Lisp but written in the C programming language. Primitive functions are also called <em>subrs</em> or <em>built-in functions</em>. (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 <em>special form</em> (see <a href="special-forms">Special Forms</a>). </p> <p>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, <strong>we discourage redefinition of primitive functions</strong>. </p> <p>The term <em>function</em> refers to all Emacs functions, whether written in Lisp or C. See <a href="function-type">Function Type</a>, for information about the functions written in Lisp. </p> <p>Primitive functions have no read syntax and print in hash notation with the name of the subroutine. </p> <div class="example"> <pre class="example">(symbol-function 'car) ; <span class="roman">Access the function cell</span>
; <span class="roman">of the symbol.</span>
⇒ #<subr car>
(subrp (symbol-function 'car)) ; <span class="roman">Is this a primitive function?</span>
⇒ t ; <span class="roman">Yes.</span>
</pre>
</div><div class="_attribution">
<p class="_attribution-p">
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc. <br>Licensed under the GNU GPL license.<br>
<a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Primitive-Function-Type.html" class="_attribution-link">https://www.gnu.org/software/emacs/manual/html_node/elisp/Primitive-Function-Type.html</a>
</p>
</div>
|