[Openmcl-devel] GF invocation protocol

Gary Byers gb at clozure.com
Tue Sep 11 11:18:48 PDT 2007

On Tue, 11 Sep 2007, Slava Akhmechet wrote:

> Hello,
> What is the status of generic function invocation protocol on OpenMCL?
> The documentation says compute-discriminating-function,
> compute-applicable-methods, and
> compute-applicable-methods-using-classes are not implemented.

That's still true; I think that some other things from that
section of the MOP spec (MAKE-METHOD-LAMBDA ?) are also missing.

> Are there plans to support this part of MOP?

It hasn't been a high priority.  I'd like to see it happen, if only
because it sounds better to say "OpenMCL supports the MOP" than it 
does to say "OpenMCL supports a large subset of the MOP", but that
hasn't been a compelling argument thus far.

I think that it's fair to say:

1) Some people need the MOP's GF invocation protocol.
2) A lot of people don't.

That tends to be sort of circular (there isn't much apparent demand,
because people who need this functionality see that it isn't there.)

> If not, does OpenMCL expose alternative API that would let me hook
> into generic function invocation and modify its behavior?

Not really.  The way that GF dispatch works in OpenMCL depends on
some low-level gunk (method functions receive extra invisible/magic
arguments, generic functions rarely use lists to represent the set
of arguments that they receive, etc.)  This low-level gunk isn't
extensible or very close to what the MOP specifies, but - all other
things being equal and in isolation - tends to be faster than doing 
things in a MOP-compliant way would be.  If overhead's introduced
here, it has to be removed from some other aspects of GF dispatch
(or GF dispatch would slow down in all cases.)

> -- 
> Regards,
> Slava Akhmechet.

More information about the Openmcl-devel mailing list