% Accessor FDEFINITION
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
によって得られる値をセットするのはエラーです。