Next: , Previous: Macro Type, Up: Programming Types


2.3.14 基本関数型

基本関数型(primitive function)は、 Lispから呼び出し可能な関数ですが、C言語で書いてあります。 基本関数のことをsubrとか 組み込み関数(built-in functions)とも呼びます。 (『subr』は『subroutine』からきている。) ほとんどの基本関数は、呼び出すときにすべての引数を評価します。 引数すべてを評価しない基本関数をスペシャルフォーム(special form)と 呼びます(see Special Forms)。

関数を呼び出す側からすれば、関数が基本関数かどうかは関係ありません。 しかし、Lispで書いた関数で基本関数を再定義しようとすると、 問題があります。 というのは、基本関数はCのコードから直接呼ばれるからです。 再定義した関数をLispから呼び出す場合には新しい定義を使いますが、 Cのコードは組み込みの定義を使い続けるでしょう。 したがって、基本関数を再定義しないでください

関数(function)という用語で、 LispやCで書かれたEmacsのすべての関数を指します。 Lispで書いた関数に関しては、See Function Type

基本関数には入力構文はなく、 サブルーティン名を含むハッシュ記法で表示します。

     
     
     (symbol-function 'car)          ; シンボルの関数セルを参照する
          ⇒ #<subr car>
     
     
     (subrp (symbol-function 'car))  ; 基本関数か?
          ⇒ t                       ; そのとおり