34 lines
4.9 KiB
HTML
34 lines
4.9 KiB
HTML
<!-- Common Lisp HyperSpec (TM), version 7.0 generated by Kent M. Pitman on Mon, 11-Apr-2005 2:31am EDT -->
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>CLHS: Section 7.6.6.1.3</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="07_ffab.htm">
|
|
<LINK REL=UP HREF="07_ffa.htm">
|
|
<LINK REL=NEXT HREF="07_ffb.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="07_ffab.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="07_ffa.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="07_ffb.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
|
|
|
|
<HR>
|
|
|
|
<H2>
|
|
7.6.6.1.3 Applying method combination to the sorted list of applicable methods</H2> <P>
|
|
In the simple case---if standard method combination is used and all applicable methods are primary methods---the effective method is the most specific method. That method can call the next most specific method by using the <A REL=DEFINITION HREF="26_glo_f.htm#function"><I>function</I></A> <A REL=DEFINITION HREF="f_call_n.htm#call-next-method"><B>call-next-method</B></A>. The method that <A REL=DEFINITION HREF="f_call_n.htm#call-next-method"><B>call-next-method</B></A> will call is referred to as the <A REL=DEFINITION HREF="26_glo_n.htm#next_method"><I>next method</I></A>. The predicate <A REL=DEFINITION HREF="f_next_m.htm#next-method-p"><B>next-method-p</B></A> tests whether a next method exists. If <A REL=DEFINITION HREF="f_call_n.htm#call-next-method"><B>call-next-method</B></A> is called and there is no next most specific method, the generic function <A REL=DEFINITION HREF="f_no_nex.htm#no-next-method"><B>no-next-method</B></A> is invoked. <P>
|
|
In general, the effective method is some combination of the applicable methods. It is described by a <A REL=DEFINITION HREF="26_glo_f.htm#form"><I>form</I></A> that contains calls to some or all of the applicable methods, returns the value or values that will be returned as the value or values of the generic function, and optionally makes some of the methods accessible by means of <A REL=DEFINITION HREF="f_call_n.htm#call-next-method"><B>call-next-method</B></A>. <P>
|
|
The role of each method in the effective method is determined by its <A REL=DEFINITION HREF="26_glo_q.htm#qualifier"><I>qualifiers</I></A> and the specificity of the method. A <A REL=DEFINITION HREF="26_glo_q.htm#qualifier"><I>qualifier</I></A> serves to mark a method, and the meaning of a <A REL=DEFINITION HREF="26_glo_q.htm#qualifier"><I>qualifier</I></A> is determined by the way that these marks are used by this step of the procedure. If an applicable method has an unrecognized <A REL=DEFINITION HREF="26_glo_q.htm#qualifier"><I>qualifier</I></A>, this step signals an error and does not include that method in the effective method. <P>
|
|
When standard method combination is used together with qualified methods, the effective method is produced as described in <A REL=CHILD HREF="07_ffb.htm">Section 7.6.6.2 (Standard Method Combination)</A>. <P>
|
|
Another type of method combination can be specified by using the <TT>:method-combination</TT> option of <A REL=DEFINITION HREF="m_defgen.htm#defgeneric"><B>defgeneric</B></A> or of any of the other operators that specify generic function options. In this way this step of the procedure can be customized. <P>
|
|
New types of method combination can be defined by using the <A REL=DEFINITION HREF="m_defi_4.htm#define-method-combination"><B>define-method-combination</B></A> <A REL=DEFINITION HREF="26_glo_m.htm#macro"><I>macro</I></A>. <P>
|
|
<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>
|