1
0
Fork 0
cl-sites/HyperSpec-7-0/HyperSpec/Body/m_defgen.htm

102 lines
22 KiB
HTML
Raw Normal View History

2024-04-01 10:24:07 +02:00
<!-- Common Lisp HyperSpec (TM), version 7.0 generated by Kent M. Pitman on Mon, 11-Apr-2005 2:31am EDT -->
<HTML>
<HEAD>
<TITLE>CLHS: Macro DEFGENERIC</TITLE>
<LINK HREF="../Data/clhs.css" REL="stylesheet" TYPE="text/css" />
<META HTTP-EQUIV="Author" CONTENT="Kent M. Pitman">
<META HTTP-EQUIV="Organization" CONTENT="LispWorks Ltd.">
<LINK REL=TOP HREF="../Front/index.htm">
<LINK REL=COPYRIGHT HREF="../Front/Help.htm#Legal">
<LINK REL=DISCLAIMER HREF="../Front/Help.htm#Disclaimer">
<LINK REL=PREV HREF="m_defcla.htm">
<LINK REL=UP HREF="c_object.htm">
<LINK REL=NEXT HREF="m_defmet.htm">
</HEAD>
<BODY>
<H1><A REV=MADE HREF="http://www.lispworks.com/"><IMG WIDTH=80 HEIGHT=65 ALT="[LISPWORKS]" SRC="../Graphics/LWSmall.gif" ALIGN=Bottom></A><A REL=TOP HREF="../Front/index.htm"><IMG WIDTH=237 HEIGHT=65 ALT="[Common Lisp HyperSpec (TM)]" SRC="../Graphics/CLHS_Sm.gif" ALIGN=Bottom></A> <A REL=PREV HREF="m_defcla.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="c_object.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="m_defmet.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
<HR>
<A NAME="defgeneric"><I>Macro</I> <B>DEFGENERIC</B></A> <P>
<P>
<P><B>Syntax:</B><P>
<P>
<B>defgeneric</B> <I>function-name gf-lambda-list [[<I>option</I> | {<I>method-description</I>}<B>*</B>]]</I><P> =&gt; <I>new-generic</I><P>
<P>
<PRE>
option::= (:argument-precedence-order parameter-name+) |
(<A REL=DEFINITION HREF="s_declar.htm#declare">declare</A> gf-declaration+) |
(:documentation gf-documentation) |
(:method-combination method-combination method-combination-argument*) |
(:generic-function-class generic-function-class) |
(:method-class method-class)
</PRE>
<PRE>
method-description::= (:method method-qualifier* specialized-lambda-list [[declaration* | documentation]] form*)
</PRE>
<P>
<P><B>Arguments and Values:</B><P>
<P>
<I>function-name</I>---a <A REL=DEFINITION HREF="26_glo_f.htm#function_name"><I>function name</I></A>. <P>
<I>generic-function-class</I>---a <A REL=DEFINITION HREF="26_glo_n.htm#non-nil"><I>non-nil</I></A> <A REL=DEFINITION HREF="26_glo_s.htm#symbol"><I>symbol</I></A> naming a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>. <P>
<I>gf-declaration</I>---an <A REL=DEFINITION HREF="d_optimi.htm#optimize"><B>optimize</B></A> <A REL=DEFINITION HREF="26_glo_d.htm#declaration_specifier"><I>declaration specifier</I></A>; other <A REL=DEFINITION HREF="26_glo_d.htm#declaration_specifier"><I>declaration specifiers</I></A> are not permitted. <P>
<I>gf-documentation</I>---a <A REL=DEFINITION HREF="26_glo_s.htm#string"><I>string</I></A>; not evaluated. <P>
<I>gf-lambda-list</I>---a <A REL=DEFINITION HREF="26_glo_g.htm#generic_function_lambda_list"><I>generic function lambda list</I></A>. <P>
<I>method-class</I>---a <A REL=DEFINITION HREF="26_glo_n.htm#non-nil"><I>non-nil</I></A> <A REL=DEFINITION HREF="26_glo_s.htm#symbol"><I>symbol</I></A> naming a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>. <P>
<I>method-combination-argument</I>---an <I>object.</I> <P>
<I>method-combination-name</I>---a <A REL=DEFINITION HREF="26_glo_s.htm#symbol"><I>symbol</I></A> naming a <A REL=DEFINITION HREF="26_glo_m.htm#method_combination"><I>method combination</I></A> <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A>. <P>
<I>method-qualifiers</I>, <I>specialized-lambda-list</I>, <I>declarations</I>, <I>documentation</I>, <I>forms</I>---as per <A REL=DEFINITION HREF="m_defmet.htm#defmethod"><B>defmethod</B></A>. <P>
<I>new-generic</I>---the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> <A REL=DEFINITION HREF="26_glo_o.htm#object"><I>object</I></A>. <P>
<I>parameter-name</I>---a <A REL=DEFINITION HREF="26_glo_s.htm#symbol"><I>symbol</I></A> that names a <A REL=DEFINITION HREF="26_glo_r.htm#required_parameter"><I>required parameter</I></A> in the <I>lambda-list</I>. (If the <TT>:argument-precedence-order</TT> option is specified, each <A REL=DEFINITION HREF="26_glo_r.htm#required_parameter"><I>required parameter</I></A> in the <I>lambda-list</I> must be used exactly once as a <I>parameter-name</I>.) <P>
<P><B>Description:</B><P>
<P>
The macro <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> is used to define a <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> or to specify options and declarations that pertain to a <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> as a whole. <P>
If <I>function-name</I> is a <A REL=DEFINITION HREF="26_glo_l.htm#list"><I>list</I></A> it must be of the form <TT>(setf </TT><I>symbol</I><TT>)</TT>. If <TT>(fboundp </TT><I>function-name</I><TT>)</TT> is <A REL=DEFINITION HREF="26_glo_f.htm#false"><I>false</I></A>, a new <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> is created. If <TT>(fdefinition </TT><I>function-name</I><TT>)</TT> is a <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>, that <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> is modified. If <I>function-name</I> names an <A REL=DEFINITION HREF="26_glo_o.htm#ordinary_function"><I>ordinary function</I></A>, a <A REL=DEFINITION HREF="26_glo_m.htm#macro"><I>macro</I></A>, or a <A REL=DEFINITION HREF="26_glo_s.htm#special_operator"><I>special operator</I></A>, an error is signaled. <P>
The effect of the <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> macro is as if the following three steps were performed: first, <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> defined by previous <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> <A REL=DEFINITION HREF="26_glo_f.htm#form"><I>forms</I></A> are removed; second, <A REL=DEFINITION HREF="f_ensure.htm#ensure-generic-function"><B>ensure-generic-function</B></A> is called; and finally, <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> specified by the current <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> <A REL=DEFINITION HREF="26_glo_f.htm#form"><I>form</I></A> are added to the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>. <P>
Each <I>method-description</I> defines a <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> on the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>. The <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda list</I></A> of each <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> must be congruent with the <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda list</I></A> specified by the <I>gf-lambda-list</I> option. If no <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> descriptions are specified and a <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> of the same name does not already exist, a <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> with no <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> is created. <P>
The <I>gf-lambda-list</I> argument of <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> specifies the shape of <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda lists</I></A> for the <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> on this <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>. All <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> on the resulting <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> must have <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda lists</I></A> that are congruent with this shape. If a <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> form is evaluated and some <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> for that <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> have <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda lists</I></A> that are not congruent with that given in the <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> form, an error is signaled. For further details on method congruence, see <A REL=CHILD HREF="07_fd.htm">Section 7.6.4 (Congruent Lambda-lists for all Methods of a Generic Function)</A>. <P>
The <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> passes to the <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> all the argument values passed to it, and only those; default values are not supported. Note that optional and keyword arguments in method definitions, however, can have default initial value forms and can use supplied-p parameters. <P>
The following options are provided. Except as otherwise noted, a given option may occur only once. <P>
<P><UL><P>
<LI> The <TT>:argument-precedence-order</TT> option is used to specify the order in which the required arguments in a call to the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> are tested for specificity when selecting a particular <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A>. Each required argument, as specified in the <I>gf-lambda-list</I> argument, must be included exactly once as a <I>parameter-name</I> so that the full and unambiguous precedence order is supplied. If this condition is not met, an error is signaled. <P>
<LI> The <A REL=DEFINITION HREF="s_declar.htm#declare"><B>declare</B></A> option is used to specify declarations that pertain to the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>. <P>
An <A REL=DEFINITION HREF="d_optimi.htm#optimize"><B>optimize</B></A> <A REL=DEFINITION HREF="26_glo_d.htm#declaration_specifier"><I>declaration specifier</I></A> is allowed. It specifies whether method selection should be optimized for speed or space, but it has no effect on <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A>. To control how a <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> is optimized, an <A REL=DEFINITION HREF="d_optimi.htm#optimize"><B>optimize</B></A> declaration must be placed directly in the <A REL=DEFINITION HREF="m_defmet.htm#defmethod"><B>defmethod</B></A> <A REL=DEFINITION HREF="26_glo_f.htm#form"><I>form</I></A> or method description. The optimization qualities <A REL=DEFINITION HREF="d_optimi.htm#speed"><B>speed</B></A> and <A REL=DEFINITION HREF="d_optimi.htm#space"><B>space</B></A> are the only qualities this standard requires, but an implementation can extend the object system to recognize other qualities. A simple implementation that has only one method selection technique and ignores <A REL=DEFINITION HREF="d_optimi.htm#optimize"><B>optimize</B></A> <A REL=DEFINITION HREF="26_glo_d.htm#declaration_specifier"><I>declaration specifiers</I></A> is valid. <P>
The <A REL=DEFINITION HREF="d_specia.htm#special"><B>special</B></A>, <A REL=DEFINITION HREF="d_ftype.htm#ftype"><B>ftype</B></A>, <B>function</B>, <A REL=DEFINITION HREF="d_inline.htm#inline"><B>inline</B></A>, <A REL=DEFINITION HREF="d_inline.htm#notinline"><B>notinline</B></A>, and <A REL=DEFINITION HREF="d_declar.htm#declaration"><B>declaration</B></A> declarations are not permitted. Individual implementations can extend the <A REL=DEFINITION HREF="s_declar.htm#declare"><B>declare</B></A> option to support additional declarations. If an implementation notices a <A REL=DEFINITION HREF="26_glo_d.htm#declaration_specifier"><I>declaration specifier</I></A> that it does not support and that has not been proclaimed as a non-standard <A REL=DEFINITION HREF="26_glo_d.htm#declaration_identifier"><I>declaration identifier</I></A> name in a <A REL=DEFINITION HREF="d_declar.htm#declaration"><B>declaration</B></A> <A REL=DEFINITION HREF="26_glo_p.htm#proclamation"><I>proclamation</I></A>, it should issue a warning. <P>
The <A REL=DEFINITION HREF="s_declar.htm#declare"><B>declare</B></A> option may be specified more than once. The effect is the same as if the lists of <A REL=DEFINITION HREF="26_glo_d.htm#declaration_specifier"><I>declaration specifiers</I></A> had been appended together into a single list and specified as a single <A REL=DEFINITION HREF="s_declar.htm#declare"><B>declare</B></A> option. <P>
<LI> The <TT>:documentation</TT> argument is a <A REL=DEFINITION HREF="26_glo_d.htm#documentation_string"><I>documentation string</I></A> to be attached to the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> <A REL=DEFINITION HREF="26_glo_o.htm#object"><I>object</I></A>, and to be attached with kind <A REL=DEFINITION HREF="a_fn.htm#function"><B>function</B></A> to the <I>function-name</I>. <P>
<LI> The <TT>:generic-function-class</TT> option may be used to specify that the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> is to have a different <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> than the default provided by the system (the <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> <A REL=DEFINITION HREF="t_std_ge.htm#standard-generic-function"><B>standard-generic-function</B></A>). The <I>class-name</I> argument is the name of a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> that can be the <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> of a <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>. If <I>function-name</I> specifies an existing <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> that has a different value for the <TT>:generic-function-class</TT> argument and the new generic function <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> is compatible with the old, <A REL=DEFINITION HREF="f_chg_cl.htm#change-class"><B>change-class</B></A> is called to change the <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> of the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>; otherwise an error is signaled. <P>
<LI> The <TT>:method-class</TT> option is used to specify that all <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> on this <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> are to have a different <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> from the default provided by the system (the <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> <A REL=DEFINITION HREF="t_std_me.htm#standard-method"><B>standard-method</B></A>). The <I>class-name</I> argument is the name of a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> that is capable of being the <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> of a <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A>. <P>
<LI> The <TT>:method-combination</TT> option is followed by a symbol that names a type of method combination. The arguments (if any) that follow that symbol depend on the type of method combination. Note that the standard method combination type does not support any arguments. However, all types of method combination defined by the short form of <A REL=DEFINITION HREF="m_defi_4.htm#define-method-combination"><B>define-method-combination</B></A> accept an optional argument named <I>order</I>, defaulting to <TT>:most-specific-first</TT>, where a value of <TT>:most-specific-last</TT> reverses the order of the primary <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> without affecting the order of the auxiliary <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A>. <P>
<P></UL><P>
The <I>method-description</I> arguments define <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> that will be associated with the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>. The <I>method-qualifier</I> and <I>specialized-lambda-list</I> arguments in a method description are the same as for <A REL=DEFINITION HREF="m_defmet.htm#defmethod"><B>defmethod</B></A>. <P>
The <I>form</I> arguments specify the method body. The body of the <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> is enclosed in an <A REL=DEFINITION HREF="26_glo_i.htm#implicit_block"><I>implicit block</I></A>. If <I>function-name</I> is a <A REL=DEFINITION HREF="26_glo_s.htm#symbol"><I>symbol</I></A>, this block bears the same name as the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>. If <I>function-name</I> is a <A REL=DEFINITION HREF="26_glo_l.htm#list"><I>list</I></A> of the form <TT>(setf </TT><I>symbol</I><TT>)</TT>, the name of the block is <I>symbol</I>. <P>
Implementations can extend <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> to include other options. It is required that an implementation signal an error if it observes an option that is not implemented locally. <P>
<A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> is not required to perform any compile-time side effects. In particular, the <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> are not installed for invocation during compilation. An <A REL=DEFINITION HREF="26_glo_i.htm#implementation"><I>implementation</I></A> may choose to store information about the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> for the purposes of compile-time error-checking (such as checking the number of arguments on calls, or noting that a definition for the function name has been seen). <P>
<P><B>Examples:</B><P>
<P>
<P><B>Affected By:</B> None.
<P>
<P><B>Exceptional Situations:</B><P>
<P>
If <I>function-name</I> names an <A REL=DEFINITION HREF="26_glo_o.htm#ordinary_function"><I>ordinary function</I></A>, a <A REL=DEFINITION HREF="26_glo_m.htm#macro"><I>macro</I></A>, or a <A REL=DEFINITION HREF="26_glo_s.htm#special_operator"><I>special operator</I></A>, an error of <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> <A REL=DEFINITION HREF="e_progra.htm#program-error"><B>program-error</B></A> is signaled. <P>
Each required argument, as specified in the <I>gf-lambda-list</I> argument, must be included exactly once as a <I>parameter-name</I>, or an error of <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> <A REL=DEFINITION HREF="e_progra.htm#program-error"><B>program-error</B></A> is signaled. <P>
The <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda list</I></A> of each <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> specified by a <I>method-description</I> must be congruent with the <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda list</I></A> specified by the <I>gf-lambda-list</I> option, or an error of <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> <A REL=DEFINITION HREF="e_error.htm#error"><B>error</B></A> is signaled. <P>
If a <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> form is evaluated and some <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> for that <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> have <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda lists</I></A> that are not congruent with that given in the <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> form, an error of <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> <A REL=DEFINITION HREF="e_error.htm#error"><B>error</B></A> is signaled. <P>
A given <I>option</I> may occur only once, or an error of <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> <A REL=DEFINITION HREF="e_progra.htm#program-error"><B>program-error</B></A> is signaled. <P>
If <I>function-name</I> specifies an existing <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A> that has a different value for the <TT>:generic-function-class</TT> argument and the new generic function <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> is compatible with the old, <A REL=DEFINITION HREF="f_chg_cl.htm#change-class"><B>change-class</B></A> is called to change the <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> of the <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic function</I></A>; otherwise an error of <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> <A REL=DEFINITION HREF="e_error.htm#error"><B>error</B></A> is signaled. <P>
Implementations can extend <A REL=DEFINITION HREF="#defgeneric"><B>defgeneric</B></A> to include other options. It is required that an implementation signal an error of <A REL=DEFINITION HREF="26_glo_t.htm#type"><I>type</I></A> <A REL=DEFINITION HREF="e_progra.htm#program-error"><B>program-error</B></A> if it observes an option that is not implemented locally. <P>
<P><B>See Also:</B><P>
<P>
<A REL=DEFINITION HREF="m_defmet.htm#defmethod"><B>defmethod</B></A>, <A REL=DEFINITION HREF="f_docume.htm#documentation"><B>documentation</B></A>, <A REL=DEFINITION HREF="f_ensure.htm#ensure-generic-function"><B>ensure-generic-function</B></A>, <A REL=DEFINITION HREF="t_generi.htm#generic-function"><B>generic-function</B></A>, <A REL=CHILD HREF="07_fd.htm">Section 7.6.4 (Congruent Lambda-lists for all Methods of a Generic Function)</A> <P>
<P><B>Notes:</B> None.
<P>
<P>
<P><HR>The following <A REL=META HREF="../Front/X3J13Iss.htm">X3J13 cleanup issues</A>, <I>not part of the specification</I>, apply to this section:<P><UL><LI> <A REL=CHILD HREF="../Issues/iss181.htm">GENERIC-FLET-POORLY-DESIGNED:DELETE</A><LI> <A REL=CHILD HREF="../Issues/iss059.htm">COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS:CLARIFY</A><LI> <A REL=CHILD HREF="../Issues/iss100.htm">DEFGENERIC-DECLARE:ALLOW-MULTIPLE</A><LI> <A REL=CHILD HREF="../Issues/iss174.htm">FUNCTION-NAME:LARGE</A><LI> <A REL=CHILD HREF="../Issues/iss097.htm">DECLS-AND-DOC</A><P></UL><HR>
<A REL=NAVIGATOR HREF="../Front/StartPts.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Starting Points]" SRC="../Graphics/StartPts.gif" ALIGN=Bottom></A><A REL=TOC HREF="../Front/Contents.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Contents]" SRC="../Graphics/Contents.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Master.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Index]" SRC="../Graphics/Index.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Symbol.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Symbols]" SRC="../Graphics/Symbols.gif" ALIGN=Bottom></A><A REL=GLOSSARY HREF="../Body/26_a.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Glossary]" SRC="../Graphics/Glossary.gif" ALIGN=Bottom></A><A HREF="../Front/X3J13Iss.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Issues]" SRC="../Graphics/Issues.gif" ALIGN=Bottom></A><BR>
<A REL=COPYRIGHT HREF="../Front/Help.htm#Legal"><I>Copyright 1996-2005, LispWorks Ltd. All rights reserved.</I></A><P>
</BODY>
</HTML>