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