Declaration FTYPE
(ftype type function-name*)
function-name - 関数名
type - 型指定子
declareとproclaim
関数
function-nameという名前の関数に対して、関数の型typeを指定します。 例えば下記の通り。
(declare (ftype (function (integer list) t) ith)
(ftype (function (number) float) sine cosine))もしあるひとつの関数が宣言されており、 その関数がレキシカルにローカル定義を持っているとき (fletかlabelsによって作成されたもの)、 その宣言はグローバル関数定義ではなく、ローカルの関数定義に適用されます。 ftype宣言は変数の束縛には適用しません (typeをご確認ください)。
function-nameのレキシカルな束縛に現れたものは、 マクロ定義には適用しません (これはftypeが各関数名の関数定義について functionの特定のサブタイプを宣言するからであり、 マクロはそのような関数を表すものではないためです)。
ftype宣言は、自由宣言と境界宣言のどちらも使えます。 fletかlabelsフォーム本体の前に現れた 関数のftype宣言は、 関数の境界宣言として定義されます。 その他の文脈の宣言は自由宣言です。