User Tools

A PCRE internal error occured. This might be caused by a faulty plugin

====== Declaration FTYPE ====== ====Syntax==== * (**ftype** //type function-name''*''//) ====Arguments==== * //function-name// - a //[[CL:Glossary:function name]]//. * //type// - a //[[CL:Glossary:type specifier]]//. ====Valid Context==== //[[CL:Glossary:declaration]]// or //[[CL:Glossary:proclamation]]// ====Binding Types Affected==== //[[CL:Glossary:function]]// ====Description==== Specifies that the //[[CL:Glossary:function|functions]]// named by //function-name//s are of the functional type //type//. For example: <blockquote> (declare (ftype (function (integer list) t) ith) (ftype (function (number) float) sine cosine)) </blockquote> If one of the //[[CL:Glossary:function|functions]]// mentioned has a lexically apparent local definition (as made by **[[CL:Special Operators:flet]]** or **[[CL:Special Operators:labels]]**), then the declaration applies to that local definition and not to the global function definition. **[[CL:Declarations:ftype]]** declarations never apply to variable //[[CL:Glossary:binding|bindings]]// (see **[[CL:Declarations:type]]**). The lexically apparent bindings of //function-names// must not be //[[CL:Glossary:macro]]// definitions. (This is because **[[CL:Declarations:ftype]]** declares the functional definition of each //[[CL:Glossary:function name]]// to be of a particular subtype of **[[CL:Types:function]]**, and //[[CL:Glossary:macro|macros]]// do not denote //[[CL:Glossary:function|functions]]//.) **[[CL:Declarations:ftype]]** declarations can be //[[CL:Glossary:free declaration|free declarations]]// or //[[CL:Glossary:bound declaration|bound declarations]]//. **[[CL:Declarations:ftype]]** declarations of functions that appear before the body of a **[[CL:Special Operators:flet]]** or **[[CL:Special Operators:labels]]** //[[CL:Glossary:form]]// that defines that function are //[[CL:Glossary:bound declaration|bound declarations]]//. Such declarations in other contexts are //[[CL:Glossary:free declaration|free declarations]]//. ====See Also==== **[[CL:Symbols:declare|Symbol DECLARE]]**, **[[CL:Macros:declaim|Macro DECLAIM]]**, **[[CL:Functions:proclaim|Function PROCLAIM]]** \issue{FUNCTION-NAME:LARGE} \issue{MACRO-DECLARATIONS:MAKE-EXPLICIT} \issue{DECLARE-FUNCTION-AMBIGUITY:DELETE-FTYPE-ABBREVIATION} \issue{WITH-ADDED-METHODS:DELETE} \issue{GENERIC-FLET-POORLY-DESIGNED:DELETE} \issue{DECLARE-FUNCTION-AMBIGUITY:DELETE-FTYPE-ABBREVIATION}