# 2.4.15 原函数类型

原函数是指由Lisp调用，但是是用 C 编写的函数。原函数也称作为 subr 或者 内置函数 （built-in functions）。（单词 "subr" 源自 "subroutine"--子例程。）绝大多数的原函数被调用时，会先对参数进行求值。而余下的函数被称为特殊表达式（special form）。特殊表达式在调用时，不会对其参数求值。

当调用函数时，函数是不是原函数并不重要。不过，如果你尝试用lisp代码重定义函数时，这点就很重要。原因是，原函数的调用很可能会绕过Lisp，而直接调用 C 中的代码，这样你的重定义可能会失效。因此我们非常不建议原函数的重定义。

术语 函数（function）单纯指Emacs中的所有函数，而不区分Lisp函数和C函数。详情查阅函数类型章节）。

原函数没有读取语法，其打印表示采用哈希表示，其记号是子例程的名称。

```
(symbol-function 'car)        ; 获取符号的函数槽
    => #<subr car>
(subrp (symbol-function 'car)) ; 这是原函数吗？
    => t                       ; 是。
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://emacs-lisp.ivory.cafe/lisp-shu-ju-lei-xing/bian-cheng-lei-xing/2.4.15-yuan-lei-xing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
