Accessor FDEFINITION
fdefinition
function-name => definition
(setf
(fdefinition
function-name) new-definition)
function-name - 関数名。setf
ではないときは、 グローバル関数かのfbound
である必要があります。
definition - function-nameという名前の現在のグローバル関数の定義
new-definition - 関数
fdefinition
は、function-nameという名前によって定義された 現在のグローバル関数にアクセスします。 定義は、関数かもしれませんし、 あるいは特殊フォームかマクロを表した オブジェクトかもしれません。 もしfboundp
がtrueであり、 かつfunction-nameがマクロか特殊フォームのときは、 fdefinition
の返却値はちゃんと定義できていませんが、 しかしfdefinition
がエラーを発することはありません。
なし。
なし。
なし。
function-nameが関数名でないとき、 型type-error
のエラーが発生します。
setf
ではない場合、 もしfunction-nameがfbound
ではないときは、 型undefined-function
のエラーが発生します。
fboundp
, fmakunbound
, macro-function
, special-operator-p
, symbol-function
fdefinition
は、flet
やlabels
によって 生成されたレキシカルな関数名の値にはアクセスできません。 グローバル環境の値にのみアクセスできます。
setf
はfdefinition
と使うことで、 function-nameの関数が特殊フォームではないとき、 グローバルな関数定義を置き換えることができます。 setf
のfdefinition
は、新しい値に関数を要求します。 function-nameのfdefinition
に、 シンボルか、リストか、 あるいはマクロか特殊フォームの名前から fdefinition
によって得られる値をセットするのはエラーです。