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